PluginProbe
MakeCommerce for WooCommerce / 1.1.7
MakeCommerce for WooCommerce v1.1.7
4.1.0 4.0.8 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 2.0.0 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.2 All 96 releases
← All changes | makecommerce.php +491 -238 1.0.21.1.7 View file →
@@ -1,9 +1,9 @@
1 1 <?php
2 2 /*
3 3 Plugin Name: MakeCommerce for WooCommerce
4 4 Description: Adds MakeCommerce payment gateway and Itella/Omniva parcel machine shipping methods to Woocommerce checkout
5 - Version: 1.0.2
5 + Version: 1.1.7
6 6 Author: Maksekeskus AS
7 7 Author URI: https://MakeCommerce.net/
8 8 Text Domain: wc_makecommerce_domain
9 9 */
@@ -71,9 +71,9 @@
71 71 const module_homepage_url = 'https://maksekeskus.ee/en/integration-modules/makecommerce-woocommerce-payment-plugin/';
72 72 const testenv_homepage_url = 'http://maksekeskus.ee/en/for-developers/test-environment/';
73 73
74 74 public $id = 'makecommerce';
75 - public $version = '1.1';
75 + public $version = '1.1.7';
76 76
77 77 public $return_url;
78 78 public $return_url_cancel;
79 79
@@ -110,8 +110,11 @@
110 110
111 111 $this->initBanklinks();
112 112
113 113 $this->title = $this->settings['ui_widget_title'];
114 + if (defined('ICL_LANGUAGE_CODE') && !empty($this->settings['ui_widget_title_'.ICL_LANGUAGE_CODE])) {
115 + $this->title = $this->settings['ui_widget_title_'.ICL_LANGUAGE_CODE];
116 + }
114 117 $this->method_title = 'MakeCommerce';
115 118 $this->description = true;
116 119
117 120 $this->_api = mk_get_api();
@@ -189,36 +192,38 @@
189 192 * Initialise Gateway Settings Form Fields
190 193 */
191 194 function init_form_fields() {
192 195
193 - $this->form_fields = array(
194 - 'header' => array(
196 + $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
197 +
198 + $this->form_fields = array();
199 + $this->form_fields['header'] = array(
195 200 'type' => 'mc_header',
196 - ),
197 - 'active' => array(
201 + );
202 + $this->form_fields['active'] = array(
198 203 'title' => __('Enable/Disable', 'wc_makecommerce_domain'),
199 204 'type' => 'checkbox',
200 205 'label' => __('Enable MakeCommerce payments', 'wc_makecommerce_domain'),
201 206 'default' => 'no'
202 - ),
203 - 'api_title' => array(
207 + );
208 + $this->form_fields['api_title'] = array(
204 209 'title' => __('MakeCommerce API', 'wc_makecommerce_domain'),
205 210 'description' => sprintf(__('Go to <a href="%s">API settings</a> to fill in the credentials', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')),
206 211 'type' => 'title',
207 - ),
208 - 'ui_title' => array(
212 + );
213 + $this->form_fields['ui_title'] = array(
209 214 'title' => '<br>'.__('User Interface', 'wc_makecommerce_domain'),
210 215 'type' => 'title',
211 216 'class' => 'ui-identifier',
212 - ),
213 - 'ui_open_by_default' => array(
217 + );
218 + $this->form_fields['ui_open_by_default'] = array(
214 219 'title' => __('Set as default selection', 'wc_makecommerce_domain'),
215 220 'label' => __('MakeCommerce payments widget will be selected by default', 'wc_makecommerce_domain'),
216 221 'type' => 'checkbox',
217 222 'default' => 'yes',
218 223 'class' => 'ui-identifier',
219 - ),
220 - 'ui_mode' => array(
224 + );
225 + $this->form_fields['ui_mode'] = array(
221 226 'title' => __('Display MC payment channels as', 'wc_makecommerce_domain'),
222 227 'type' => 'mc_hidden',
223 228 'default' => 'widget',
224 229 'options' => array(
@@ -225,17 +230,32 @@
225 230 'inline' => __('List', 'wc_makecommerce_domain'),
226 231 'widget' => __('Grouped to widget', 'wc_makecommerce_domain'),
227 232 ),
228 233 'class' => 'ui-identifier',
229 - ),
230 - 'ui_widget_title' => array(
231 - 'title' => __('MC payments widget title', 'wc_makecommerce_domain'),
232 - 'type' => 'text',
233 - 'desc_tip' => __("Appropriate title may depend on the configuration you have made, i.e. 'pay with bank-link or credit card', 'pay with bank-links' or 'payment methods'", 'wc_makecommerce_domain'),
234 - 'default' => __('Pay with bank-links or credit card', 'wc_makecommerce_domain'),
235 - 'class' => 'ui-identifier',
236 - ),
237 - 'ui_inline_uselogo' => array(
234 + );
235 +
236 +
237 + if (empty($languages)) {
238 + $this->form_fields['ui_widget_title'] = array(
239 + 'title' => __('Payments widget title', 'wc_makecommerce_domain'),
240 + 'type' => 'text',
241 + 'desc_tip' => __("Appropriate title may depend on the configuration you have made, i.e. 'pay with bank-link or credit card', 'pay with bank-links' or 'payment methods'", 'wc_makecommerce_domain'),
242 + 'default' => __('Pay with bank-links or credit card', 'wc_makecommerce_domain'),
243 + 'class' => 'ui-identifier',
244 + );
245 + } else {
246 + foreach ($languages as $language_code => $language) {
247 + $language_name = !empty($language['translated_name']) ? $language['translated_name'] : $language_code;
248 + $this->form_fields['ui_widget_title_'.$language_code] = array(
249 + 'title' => __('Payments widget title', 'wc_makecommerce_domain').sprintf(' (%s)', $language_code),
250 + 'type' => 'text',
251 + 'desc_tip' => __("Appropriate title may depend on the configuration you have made, i.e. 'pay with bank-link or credit card', 'pay with bank-links' or 'payment methods'", 'wc_makecommerce_domain'),
252 + 'default' => __('Pay with bank-links or credit card', 'wc_makecommerce_domain'),
253 + 'class' => 'ui-identifier',
254 + );
255 + }
256 + }
257 + $this->form_fields['ui_inline_uselogo'] = array(
238 258 'title' => __('MC payment channels display style', 'wc_makecommerce_domain'),
239 259 'type' => 'select',
240 260 'default' => 'logo',
241 261 'options' => array(
@@ -243,10 +263,10 @@
243 263 'text_logo' => __('Text & logo', 'wc_makecommerce_domain'),
244 264 'text' => __('Text', 'wc_makecommerce_domain'),
245 265 ),
246 266 'class' => 'ui-identifier',
247 - ),
248 - 'ui_widget_logosize' => array(
267 + );
268 + $this->form_fields['ui_widget_logosize'] = array(
249 269 'title' => __('Size of payment channel logos', 'wc_makecommerce_domain'),
250 270 'type' => 'select',
251 271 'default' => 'medium',
252 272 'options' => array(
@@ -254,16 +274,16 @@
254 274 'medium' => __('Medium', 'wc_makecommerce_domain'),
255 275 'large' => __('Large', 'wc_makecommerce_domain')
256 276 ),
257 277 'class' => 'ui-identifier',
258 - ),
259 - 'ui_widget_groupcountries' => array(
278 + );
279 + $this->form_fields['ui_widget_groupcountries'] = array(
260 280 'title' => __('Group bank-links by countries', 'wc_makecommerce_domain'),
261 281 'type' => 'mc_hidden',
262 282 'default' => 'no',
263 283 'class' => 'ui-identifier',
264 - ),
265 - 'ui_widget_countryselector' => array(
284 + );
285 + $this->form_fields['ui_widget_countryselector'] = array(
266 286 'title' => __('Country selector style', 'wc_makecommerce_domain'),
267 287 'type' => 'mc_hidden',
268 288 'default' => 'flag',
269 289 'options' => array(
@@ -270,56 +290,49 @@
270 290 'flag' => __('Flag', 'wc_makecommerce_domain'),
271 291 'dropdown' => __('Dropdown', 'wc_makecommerce_domain'),
272 292 ),
273 293 'class' => 'ui-identifier',
274 - ),
275 - 'ui_widget_groupcc' => array(
294 + );
295 + $this->form_fields['ui_widget_groupcc'] = array(
276 296 'title' => __('Group credit card into separate widget', 'wc_makecommerce_domain'),
277 297 'type' => 'mc_hidden',
278 298 'default' => 'no',
279 299 'class' => 'ui-identifier',
280 - ),
281 - 'ui_chorder' => array(
300 + );
301 + $this->form_fields['ui_chorder'] = array(
282 302 'title' => __('Define custom order of payment channels', 'wc_makecommerce_domain'),
283 303 'type' => 'text',
284 304 'desc_tip' => __('If you want to change default order, put here comma separated list of channels. i,e, - seb,lhv,swedbank. see more on the module home page (link above)', 'wc_makecommerce_domain'),
285 305 'class' => 'ui-identifier',
286 - ),
287 - 'ui_javascript' => array(
306 + );
307 + $this->form_fields['ui_javascript'] = array(
288 308 'type' => 'ui_javascript',
289 - ),
290 - 'cc_title' => array(
309 + );
310 + $this->form_fields['cc_title'] = array(
291 311 'title' => '<br>'.__('Credit Card Settings', 'wc_makecommerce_domain'),
292 312 'type' => 'title',
293 - ),
294 - 'cc_pass_cust_data' => array(
313 + );
314 + $this->form_fields['cc_pass_cust_data'] = array(
295 315 'title' => __('Prefill Credit Card form with customer data', 'wc_makecommerce_domain'),
296 316 'type' => 'checkbox',
297 317 'default' => 'yes',
298 318 'desc_tip' => __('It will pass user Name and e-mail address to the Credit Card dialog to make the form filling easier', 'wc_makecommerce_domain'),
299 - ),
300 - 'cc_shop_name' => array(
301 - 'title' => __('Shop name on credit card payment', 'wc_makecommerce_domain'),
302 - 'type' => 'text',
303 - 'desc_tip' => __('This will appear on buyer\'s credit card transaction', 'wc_makecommerce_domain'),
304 - ),
305 - 'cc_cart_reference_string' => array(
306 - 'title' => __('Order reference on credit card payment', 'wc_makecommerce_domain'),
307 - 'type' => 'text',
308 - 'default' => 'Order %s',
309 - 'desc_tip' => __('This will appear on buyer\'s credit card transaction where "%s" is the order number', 'wc_makecommerce_domain'),
310 - ),
311 - 'adv_title' => array(
312 - 'title' => '<br>'.__('Advanced Settings', 'wc_makecommerce_domain'),
319 + );
320 + $this->form_fields['adv_title'] = array(
321 + 'title' => '<hr><br>'.__('Advanced Settings', 'wc_makecommerce_domain'),
313 322 'type' => 'title',
314 - ),
315 - 'reload_links' => array(
323 + );
324 + $this->form_fields['reload_links'] = array(
316 325 'type' => 'mc_banklinks_reload',
317 326 'title' => __('Update payment methods', 'wc_makecommerce_domain'),
318 327 'description' => __('Update', 'wc_makecommerce_domain'),
319 328 'desc_tip' => __('This will update shop configuration from MakeCommerce servers.', 'wc_makecommerce_domain'),
320 - ),
321 - );
329 + );
330 + $this->form_fields['cron_info'] = array(
331 + 'type' => 'cron_link',
332 + 'title' => __('Update url', 'wc_makecommerce_domain'),
333 + 'desc_tip' => __('Update url for cron job.', 'wc_makecommerce_domain'),
334 + );
322 335 }
323 336
324 337 public function generate_mc_hidden_html( $key, $data ) {
325 338 $field_key = $this->get_field_key($key);
@@ -332,9 +345,43 @@
332 345 </tr>
333 346 <?php
334 347 return ob_get_clean();
335 348 }
349 +
350 + public function generate_cron_link_html( $key, $data ) {
351 + $field = $this->get_field_key( $key );
352 + $defaults = array(
353 + 'title' => '',
354 + 'disabled' => false,
355 + 'class' => '',
356 + 'css' => '',
357 + 'placeholder' => '',
358 + 'type' => 'text',
359 + 'desc_tip' => false,
360 + 'description' => '',
361 + 'custom_attributes' => array()
362 + );
336 363
364 + $data = wp_parse_args( $data, $defaults );
365 + $shop_id_text = get_option('mc_banklinks_api_type', false) == 'live' ? 'mk-shop-id': 'mk-test-shop-id';
366 + ob_start();
367 + ?>
368 + <tr valign="top">
369 + <th scope="row" class="titledesc">
370 + <label for="<?php echo esc_attr( $field ); ?>"><?php echo wp_kses_post( $data['title'] ); ?></label>
371 + <?php echo $this->get_tooltip_html( $data ); ?>
372 + </th>
373 + <td class="forminp">
374 + <fieldset>
375 + <legend class="screen-reader-text"><span><?php echo wp_kses_post( $data['title'] ); ?></span></legend>
376 + <p><?php echo get_site_url(null, '?mk-action=mk-update&'.$shop_id_text.'=') . get_option('mk_test_shop_id', false);?></p>
377 + </fieldset>
378 + </td>
379 + </tr>
380 + <?php
381 + return ob_get_clean();
382 + }
383 +
337 384 public function generate_mc_banklinks_reload_html( $key, $data ) {
338 385
339 386 $field = $this->get_field_key( $key );
340 387 $defaults = array(
@@ -472,9 +519,9 @@
472 519 }
473 520
474 521 public function mc_banklinks_reload($force = false) {
475 522 if ($force || (defined('DOING_AJAX') && DOING_AJAX)) {
476 -
523 +
477 524 global $wpdb;
478 525 global $mkDbTable;
479 526 global $wp_version;
480 527
@@ -492,12 +539,15 @@
492 539 return false;
493 540 }
494 541
495 542 try {
496 - $methods = $this->_api->getShopConfig($request_params)->paymentMethods;
543 + $shopConfig = $this->_api->getShopConfig($request_params);
544 + $methods = $shopConfig->payment_methods;
497 545 } catch (Exception $e) {
546 + error_log(print_r($e, 1));
498 547 return false;
499 548 }
549 +
500 550 if(isset($methods->banklinks)) {
501 551 foreach($methods->banklinks as $method) {
502 552 $wpdb->insert($tableName, array('type' => 'banklink', 'country' => $method->country, 'name' => $method->name, 'url' => $method->url));
503 553 }
@@ -509,11 +559,17 @@
509 559 $wpdb->insert($tableName, array('type' => 'card', 'name' => $method->name));
510 560 }
511 561 $updated = true;
512 562 }
563 +
564 + if(isset($shopConfig) && strlen($shopConfig->name)) {
565 + update_option( 'mc_shop_name', $shopConfig->name );
566 + }
567 +
513 568 if ($updated) {
514 569 update_option( 'mc_banklinks_api_type', get_option('mk_api_type', false) );
515 570 }
571 +
516 572 if ($force) {
517 573 $this->initBankLinks();
518 574 return $updated;
519 575 }
@@ -644,8 +700,9 @@
644 700 <?php
645 701 }
646 702 ?>
647 703 </ul>
704 + <div class="mc-clear-both"></div>
648 705 <script type="text/javascript">
649 706 var makecommerceId = '<?php echo $this->id; ?>';
650 707 var selectedCountry = jQuery('input[name=makecommerce_country_picker]:checked').val();
651 708
@@ -764,9 +821,9 @@
764 821
765 822 $posA = array_search($a->name, $order);
766 823 $posB = array_search($b->name, $order);
767 824
768 - if($posA === $posB) return 0;
825 + if($posA === $posB) return $a->id > $b->id ? 1 : -1;
769 826 if($posA === FALSE) return 1;
770 827 if($posB === FALSE) return -1;
771 828
772 829 return $posA > $posB ? 1 : -1;
@@ -909,9 +966,9 @@
909 966 }
910 967
911 968 protected function _getOrderConfirmationUrl($order) {
912 969 //$url = add_query_arg('order', $order->id, add_query_arg('key', $order->order_key, get_permalink(get_option('woocommerce_pay_page_id'))));
913 - $url = site_url('?makecommerce_card_pay=1&order_id='.$order->id);
970 + $url = site_url('?makecommerce_card_pay=1&order_id='.$order->id.'&lang='.(defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : strtolower(substr(get_locale(), 0, 2))));
914 971 return $url;
915 972 }
916 973
917 974 function receipt_page($orderId) {
@@ -931,14 +988,14 @@
931 988 'key' => $this->_api->getPublishableKey(),
932 989 'transaction' => $transactionId,
933 990 'selector' => '#submit_banklinkmakecommerce_payment_form',
934 991 'amount' => round($order->order_total, 2),
935 - 'locale' => strtolower(substr(get_locale(), 0, 2)),
992 + 'locale' => !empty($_GET['lang']) ? $_GET['lang'] : (defined('ICL_LANGUAGE_CODE') ? ICL_LANGUAGE_CODE : strtolower(substr(get_locale(), 0, 2))),
936 993 'open-on-load' => 'true',
937 994 'client-name' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) ($order->billing_first_name . ' ' . $order->billing_last_name) : ''),
938 995 'email' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) $order->billing_email : ''),
939 - 'name' => $this->settings['cc_shop_name'],
940 - 'description' => (string)sprintf($this->settings['cc_cart_reference_string'], (string) $idReference),
996 + 'name' => get_option('mc_shop_name', ''),
997 + 'description' => __('Order', 'woocommerce') . '&nbsp;' . (string) $idReference,
941 998 'completed' => 'makecommerce_cc_complete',
942 999 'currency' => 'EUR',
943 1000 );
944 1001 ?>
@@ -1237,8 +1294,11 @@
1237 1294 $this->init_settings();
1238 1295
1239 1296 $this->enable = $this->settings['active'];
1240 1297 $this->title = $this->settings['method_name'];
1298 + if (defined('ICL_LANGUAGE_CODE') && !empty($this->settings['method_name_'.ICL_LANGUAGE_CODE])) {
1299 + $this->title = $this->settings['method_name_'.ICL_LANGUAGE_CODE];
1300 + }
1241 1301 $this->availability = 'specific';
1242 1302 $this->countries = $this->settings['countries'];
1243 1303 $this->prioritization = $this->settings['prioritization'];
1244 1304 $this->free_shipping_min_amount = $this->settings['free_shipping_min_amount'];
@@ -1246,19 +1306,62 @@
1246 1306 $this->short_office_names = $this->settings['short_office_names'];
1247 1307 $this->order_country = 'unknown';
1248 1308 add_action('woocommerce_update_options_shipping_' . $this->id, array(&$this, 'process_admin_options'));
1249 1309 add_filter('woocommerce_review_order_after_shipping' , array(&$this, 'add_parcelmachine_checkout_fields'));
1310 + //add_filter('woocommerce_update_order_review_fragments' , array(&$this, 'add_parcelmachine_checkout_fields'));
1250 1311 add_action('woocommerce_checkout_process', array(&$this, 'check_parcelmachine_checkout_fields'));
1312 + add_action('woocommerce_after_checkout_validation', array(&$this, 'check_parcelmachine_checkout_fields'));
1251 1313 add_action('woocommerce_checkout_update_order_meta', array(&$this, 'add_parcelmachine_order_meta'));
1252 - add_filter('woocommerce_order_shipping_to_display_shipped_via', array(&$his, 'add_admin_parcelmachine_via_field'));
1314 + add_filter('woocommerce_order_shipping_to_display_shipped_via', array(&$this, 'add_admin_parcelmachine_via_field'));
1253 1315 }
1254 1316
1317 + public function generate_shipping_ui_javascript_html( $key, $data ) { ?>
1318 + <script type="text/javascript">
1319 + jQuery(document).ready(function($) {
1320 + var country_select = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_countries');
1321 + var prices = [], free_shippings = [];
1322 + $.each(country_select.find('option'), function(i, option) {
1323 + prices[$(option).val()] = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_price_' + $(option).val().toLowerCase()).closest('tr');
1324 + free_shippings[$(option).val()] = $('#woocommerce_parcelmachine_<?php echo strtolower($this->ext); ?>_free_shipping_min_amount_' + $(option).val().toLowerCase()).closest('tr');
1325 + });
1326 + country_select.on('change', function(){
1327 + var countries = $(this).val();
1328 + if(countries) {
1329 + hidePrices(countries);
1330 + }
1331 + });
1332 + hidePrices(country_select.val());
1333 + function hidePrices(countries) {
1334 + for (var key in prices) {
1335 + if(countries.indexOf(key) == -1){
1336 + prices[key].hide();
1337 + free_shippings[key].hide();
1338 + } else {
1339 + prices[key].show();
1340 + free_shippings[key].show();
1341 + }
1342 + }
1343 + }
1344 + });
1345 + </script>
1346 + <?php }
1347 +
1255 1348 function calculate_shipping($package = array()) {
1349 + $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1256 1350
1257 - $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1258 - if ($this->free_shipping_min_amount && $package['contents_cost'] >= $this->free_shipping_min_amount) {
1351 + $free_shipping_min_amount = $this->settings['free_shipping_min_amount_'.strtolower($package['destination']['country'])];
1352 +
1353 + if ($free_shipping_min_amount && $package['contents_cost'] >= $free_shipping_min_amount) {
1259 1354 $price = 0;
1260 1355 }
1356 +
1357 + $free_shipping = true;
1358 + foreach ($package['contents'] as $line) {
1359 + $free_shipping = get_post_meta($line['product_id'], '_no_shipping_cost', true) === 'yes' ? $free_shipping : false;
1360 + }
1361 + if($free_shipping) {
1362 + $price = 0;
1363 + }
1261 1364 $rate = array(
1262 1365 'id' => $this->id,
1263 1366 'label' => $this->title,
1264 1367 'cost' => $price,
@@ -1332,38 +1435,43 @@
1332 1435 }
1333 1436 return $machines;
1334 1437 }
1335 1438
1336 - function add_parcelmachine_checkout_fields($checkout) {
1439 + function add_parcelmachine_checkout_fields($fragments) {
1337 1440 $this->order_country = WC()->customer->get_shipping_country();
1338 - echo '<tr style="display: none;" class="parcel_machine_checkout" id="parcel_machine_checkout_parcelmachine_'.mb_strtolower($this->ext).'"><th>' . $this->title . '</th>';
1339 - echo '<td>';
1441 + $res = '';
1442 + $res .= '<tr style="display: none;" class="parcel_machine_checkout parcel_machine_checkout_parcelmachine_'.mb_strtolower($this->ext).'">';
1443 + // echo '<th>' . $this->title . '</th>';
1444 + // echo '<td>';
1445 + $res .= '<td colspan="2">';
1340 1446 $options = array();
1341 1447 $machines = $this->mk_get_machines();
1342 - echo '<p class="form-row" id="'.esc_attr($this->id).'_field">';
1343 - echo '<select class="select" name="'.esc_attr($this->id).'" id="'.esc_attr($this->id).'">';
1448 + $res .= '<p class="form-row" id="'.esc_attr($this->id).'_field">';
1449 + $res .= '<select class="select" name="'.esc_attr($this->id).'" id="'.esc_attr($this->id).'">';
1450 + $res .= '<option value="">'.__('-- select parcel machine --', 'wc_makecommerce_domain').'</option>';
1344 1451 $pcity = false;
1345 1452 foreach ($machines as $machine) {
1346 1453 $city = strtolower($machine['city']);
1347 1454 if ($city !== $pcity) {
1348 - if ($pcity) echo '</optgroup>';
1349 - echo '<optgroup label="'.$machine['city'].'">';
1455 + if ($pcity) $res .= '</optgroup>';
1456 + $res .= '<optgroup label="'.$machine['city'].'">';
1350 1457 }
1351 1458 $mname = $machine['name'];
1352 1459 if ($this->short_office_names !== 'yes') $mname .= ' - ' . $machine['city'] . ', ' . $machine['address'];
1353 - echo '<option value="'.esc_attr($machine['provider'].'||'.$machine['id']).'">'.$mname.'</option>';
1460 + $res .= '<option value="'.esc_attr($machine['carrier'].'||'.$machine['id']).'">'.$mname.'</option>';
1354 1461 $pcity = $city;
1355 1462 }
1356 - if ($pcity) echo '</optgroup>';
1357 - echo '</select>';
1358 - echo '</p>';
1359 - echo '</td></tr>';
1463 + if ($pcity) $res .= '</optgroup>';
1464 + $res .= '</select>';
1465 + $res .= '</p>';
1466 + $res .= '</td></tr>';
1467 + echo $res;
1360 1468 }
1361 1469
1362 1470 function check_parcelmachine_checkout_fields() {
1363 1471 $shipping_method = !empty($_POST['shipping_method']) ? $_POST['shipping_method'] : false;
1364 1472 if (!empty($shipping_method[0])) { $shipping_method = $shipping_method[0]; }
1365 - if ($shipping_method === $this->id && empty($_POST['parcel_machine_itella'])) {
1473 + if ($shipping_method === $this->id && empty($_POST[$shipping_method])) {
1366 1474 wc_add_notice(__('<strong>Parcel machine</strong> is a required field.'), 'error');
1367 1475 }
1368 1476 }
1369 1477 function add_parcelmachine_order_meta($order_id) {
@@ -1373,10 +1481,9 @@
1373 1481 update_post_meta($order_id, '_parcel_machine', sanitize_text_field($_POST[$this->id]));
1374 1482 }
1375 1483 }
1376 1484 function add_admin_parcelmachine_via_field($order) {
1377 - error_log('Via');
1378 - error_log(print_r($order, 1));
1485 + return ' <small>(via '.$this->name_ext.')</small>';
1379 1486 }
1380 1487 }
1381 1488 class WC_ParcelMachine_Shipping_Method_Omniva extends WC_ParcelMachine_Shipping_Method {
1382 1489 function __construct($instance_id = 0) {
@@ -1385,108 +1492,139 @@
1385 1492 parent::__construct();
1386 1493 }
1387 1494 function init_form_fields() {
1388 1495
1389 - $this->form_fields = array(
1390 - 'logo' => array('type' => 'title', 'title' => __get_logo_html()),
1391 - 'generic' => array('type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain')),
1392 - 'active' => array(
1496 + $this->form_fields = array();
1497 + $this->form_fields['logo'] = array('type' => 'title', 'title' => __get_logo_html());
1498 + $this->form_fields['generic'] = array(
1499 + 'type' => 'title',
1500 + 'title' => __('Generic and pricing options', 'wc_makecommerce_domain'),
1501 + 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options.', 'wc_makecommerce_domain').'<br>'.__('You can mark there also a product as "Free shipping in parcel machine."', 'wc_makecommerce_domain'),
1502 + );
1503 + $this->form_fields['active'] = array(
1393 1504 'title' => __('Enable', 'wc_makecommerce_domain'),
1394 1505 'type' => 'checkbox',
1395 1506 'label' => __('enabled', 'wc_makecommerce_domain'),
1396 1507 'default' => 'no',
1397 - 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options', 'wc_makecommerce_domain'),
1398 - ),
1399 - 'price_ee' => array(
1400 - 'title' => __('Price EE', 'wc_makecommerce_domain'),
1508 + );
1509 + $this->form_fields['countries'] = array(
1510 + 'title' => __('Enable Shipping to', 'wc_makecommerce_domain'),
1511 + 'type' => 'multiselect',
1512 + 'class' => 'wp-enhanced-select',
1513 + 'css' => 'width: 450px;',
1514 + 'default' => array('EE','LV','LT'),
1515 + 'options' => array('EE' => __('Estonia - EE'), 'LV' => __('Latvia - LV'), 'LT' => __('Lithuania - LT')),
1516 + 'description' => __('use Shift key to select multiple lines', 'wc_makecommerce_domain'),
1517 + );
1518 + $this->form_fields['price_ee'] = array(
1519 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE',
1401 1520 'type' => 'text',
1402 1521 'default' => '2.99'
1403 - ),
1404 - 'price_lv' => array(
1405 - 'title' => __('Price LV', 'wc_makecommerce_domain'),
1522 + );
1523 + $this->form_fields['free_shipping_min_amount_ee'] = array(
1524 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' EE',
1525 + 'type' => 'number',
1526 + 'default' => '0',
1527 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1528 + );
1529 + $this->form_fields['price_lv'] = array(
1530 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LV',
1406 1531 'type' => 'text',
1407 1532 'default' => '7.99'
1408 - ),
1409 - 'price_lt' => array(
1410 - 'title' => __('Price LT', 'wc_makecommerce_domain'),
1533 + );
1534 + $this->form_fields['free_shipping_min_amount_lv'] = array(
1535 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' LV',
1536 + 'type' => 'number',
1537 + 'default' => '0',
1538 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1539 + );
1540 + $this->form_fields['price_lt'] = array(
1541 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' LT',
1411 1542 'type' => 'text',
1412 1543 'default' => '8.99'
1413 - ),
1414 - //'price_fi' => array(
1415 - // 'title' => __('Price FI', 'wc_makecommerce_domain'),
1416 - // 'type' => 'text',
1417 - // 'default' => '10.99'
1418 - //),
1419 - 'free_shipping_min_amount' => array(
1420 - 'title' => __('Minimum amount for free shipping', 'wc_makecommerce_domain'),
1544 + );
1545 + $this->form_fields['free_shipping_min_amount_lt'] = array(
1546 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' LT',
1421 1547 'type' => 'number',
1422 1548 'default' => '0',
1423 - 'description' => '(0 means no free shipping)'
1424 - ),
1425 - 'maximum_weight' => array(
1549 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1550 + );
1551 + $this->form_fields['maximum_weight'] = array(
1426 1552 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1427 1553 'type' => 'text',
1428 1554 'default' => '15'
1429 - ),
1430 - 'countries' => array(
1431 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1432 - 'type' => 'multiselect',
1433 - 'class' => 'wp-enhanced-select',
1434 - 'css' => 'width: 450px;',
1435 - 'default' => array('EE','LV','LT'),
1436 - 'options' => array('EE' => __('Estonia'), 'LV' => __('Latvia'), 'LT' => __('Lithuania')),
1437 - ),
1438 - 'look_and_feel' => array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on check-out page', 'wc_makecommerce_domain')),
1439 - 'method_name' => array(
1440 - 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
1441 - 'type' => 'text',
1442 - 'default' => __('Omniva Parcel Machine', 'wc_makecommerce_domain')
1443 - ),
1444 - 'prioritization' => array(
1555 + );
1556 +
1557 + $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => '<hr><br>'.__('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on check-out page', 'wc_makecommerce_domain'));
1558 + $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
1559 + if (empty($languages)) {
1560 + $this->form_fields['method_name'] = array(
1561 + 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
1562 + 'type' => 'text',
1563 + 'default' => __('Omniva Parcel Machine', 'wc_makecommerce_domain')
1564 + );
1565 + } else {
1566 + foreach ($languages as $language_code => $language) {
1567 + $language_name = !empty($language['translated_name']) ? $language['translated_name'] : $language_code;
1568 + $this->form_fields['method_name_'.$language_code] = array(
1569 + 'title' => __('Shipping Method Title', 'wc_makecommerce_domain').sprintf(' (%s)', $language_code),
1570 + 'type' => 'text',
1571 + 'default' => __('Omniva Parcel Machine', 'wc_makecommerce_domain')
1572 + );
1573 + }
1574 + }
1575 + $this->form_fields['prioritization'] = array(
1445 1576 'title' => __('Prioritize', 'wc_makecommerce_domain'),
1446 1577 'type' => 'checkbox',
1447 1578 'label' => __('Bigger cities will be on top of list, others sorted alphabetically', 'wc_makecommerce_domain'),
1448 1579 'default' => 'yes'
1449 - ),
1450 - 'short_office_names' => array(
1580 + );
1581 + $this->form_fields['short_office_names'] = array(
1451 1582 'title' => __('Short names', 'wc_makecommerce_domain'),
1452 1583 'type' => 'checkbox',
1453 1584 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'),
1454 1585 'default' => 'no'
1455 - ),
1456 - 'api_access' => array( 'type' => 'title', 'title' => '<br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into Omniva system and print the out the package labels right here, at the shop orders view. <br> Please set your Omniva web servises account credentials below here. <br>(see more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api'))),
1457 - 'service_user' => array(
1586 + );
1587 + $this->form_fields['api_access'] = array( 'type' => 'title', 'title' => '<hr><br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into Omniva system and print the out the package labels right here, at the shop orders view. <br> Please set your Omniva web servises account credentials below here. <br>(see more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')));
1588 + $this->form_fields['service_user'] = array(
1458 1589 'title' => __('Omniva web services username', 'wc_makecommerce_domain'),
1459 1590 'type' => 'text',
1460 1591 'default' => ''
1461 - ),
1462 - 'service_password' => array(
1592 + );
1593 + $this->form_fields['service_password'] = array(
1463 1594 'title' => __('Omniva web services password', 'wc_makecommerce_domain'),
1464 1595 'type' => 'text',
1465 1596 'default' => ''
1466 - ),
1467 - 'return_address' => array( 'type' => 'title', 'title' => __('Return address', 'wc_makecommerce_domain'), 'description' => __('Please define return address for Omniva shipments', 'wc_makecommerce_domain')),
1468 - 'shop_name' => array(
1597 + );
1598 + $this->form_fields['return_address'] = array( 'type' => 'title', 'title' => __('Return address', 'wc_makecommerce_domain'), 'description' => __('Please define return address for Omniva shipments', 'wc_makecommerce_domain'));
1599 + $this->form_fields['shop_name'] = array(
1469 1600 'type' => 'text',
1470 1601 'title' => __('Shop name', 'wc_makecommerce_domain'),
1471 1602 'class' => 'input-text regular-input',
1472 - ),
1473 - 'shop_phone' => array(
1603 + );
1604 + $this->form_fields['shop_phone'] = array(
1474 1605 'type' => 'text',
1475 1606 'title' => __('Shop phone', 'wc_makecommerce_domain'),
1476 1607 'class' => 'input-text regular-input',
1477 - ),
1478 - 'shop_email' => array(
1608 + );
1609 + $this->form_fields['shop_email'] = array(
1479 1610 'type' => 'text',
1480 1611 'title' => __('Shop email', 'wc_makecommerce_domain'),
1481 1612 'class' => 'input-text regular-input',
1482 - ),
1483 - 'shop_postal_code' => array(
1613 + );
1614 + $this->form_fields['shop_address_city'] = array(
1484 1615 'type' => 'text',
1616 + 'title' => __('Shop address city', 'wc_makecommerce_domain'),
1617 + 'class' => 'input-text regular-input',
1618 + );
1619 + $this->form_fields['shop_postal_code'] = array(
1620 + 'type' => 'text',
1485 1621 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1486 1622 'class' => 'input-text regular-input',
1487 1623 'description' => __('Put here zip-code of the Parcel Terminal you use for returns, see: <a href="https://www.omniva.ee/era/kaart/asukohad">List of Omniva Terminals</a>', 'wc_makecommerce_domain')
1488 - ),
1624 + );
1625 + $this->form_fields['shipping_ui_javascript'] = array(
1626 + 'type' => 'shipping_ui_javascript',
1489 1627 );
1490 1628 }
1491 1629
1492 1630 }
@@ -1498,98 +1636,113 @@
1498 1636 }
1499 1637 function init_form_fields() {
1500 1638 global $woocommerce;
1501 1639
1502 - $this->form_fields = array(
1503 - 'logo' => array('type' => 'title', 'title' => __get_logo_html()),
1504 - 'generic' => array( 'type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain')),
1505 - 'active' => array(
1640 + $this->form_fields = array();
1641 + $this->form_fields['logo'] = array('type' => 'title', 'title' => __get_logo_html());
1642 + $this->form_fields['generic'] = array( 'type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain'));
1643 + $this->form_fields['active'] = array(
1506 1644 'title' => __('Enable', 'wc_makecommerce_domain'),
1507 1645 'type' => 'checkbox',
1508 1646 'label' => __('enabled', 'wc_makecommerce_domain'),
1509 1647 'default' => 'no',
1510 1648 'description' => __('You can always exclude a product from being available for the Parcel Machine delivery by clicking "Does not fit parcel machine" in the product\'s shipping options', 'wc_makecommerce_domain'),
1511 - ),
1512 - 'price_ee' => array(
1513 - 'title' => __('Price EE', 'wc_makecommerce_domain'),
1649 + );
1650 + $this->form_fields['countries'] = array(
1651 + 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1652 + 'type' => 'multiselect',
1653 + 'class' => 'wp-enhanced-select',
1654 + 'css' => 'width: 450px;',
1655 + 'default' => array('EE','FI'),
1656 + 'options' => array('EE' => __('Estonia - EE'), 'FI' => __('Finland - FI')),
1657 + );
1658 + $this->form_fields['price_ee'] = array(
1659 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' EE',
1514 1660 'type' => 'text',
1515 1661 'default' => '2.99'
1516 - ),
1517 - 'price_fi' => array(
1518 - 'title' => __('Price FI', 'wc_makecommerce_domain'),
1662 + );
1663 + $this->form_fields['free_shipping_min_amount_ee'] = array(
1664 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain').' EE',
1665 + 'type' => 'number',
1666 + 'default' => '0',
1667 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1668 + );
1669 + $this->form_fields['price_fi'] = array(
1670 + 'title' => __('Shipping price', 'wc_makecommerce_domain').' FI',
1519 1671 'type' => 'text',
1520 1672 'default' => '10.99'
1521 - ),
1522 - 'free_shipping_min_amount' => array(
1523 - 'title' => __('Minimum amount for free shipping', 'wc_makecommerce_domain'),
1673 + );
1674 + $this->form_fields['free_shipping_min_amount_fi'] = array(
1675 + 'title' => __('Free shipping amount', 'wc_makecommerce_domain'). ' FI',
1524 1676 'type' => 'number',
1525 1677 'default' => '0',
1526 - 'description' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1527 - ),
1528 - 'maximum_weight' => array(
1678 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1679 + );
1680 + $this->form_fields['maximum_weight'] = array(
1529 1681 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1530 1682 'type' => 'text',
1531 1683 'default' => '15'
1532 - ),
1533 - 'countries' => array(
1534 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1535 - 'type' => 'multiselect',
1536 - 'class' => 'wp-enhanced-select',
1537 - 'css' => 'width: 450px;',
1538 - 'default' => array('EE','FI'),
1539 - 'options' => array('EE' => __('Estonia'), 'FI' => __('Finland')),
1540 - ),
1541 - 'look_and_feel' => array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain')),
1542 - 'method_name' => array(
1543 - 'title' => __('Method Title', 'wc_makecommerce_domain'),
1544 - 'type' => 'text',
1545 - 'default' => __('SmartPOST Parcel Machine', 'wc_makecommerce_domain')
1546 - ),
1547 - 'prioritization' => array(
1684 + );
1685 +
1686 + $this->form_fields['look_and_feel'] = array( 'type' => 'title', 'title' => '<br>'.__('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain'));
1687 + $languages = apply_filters('wpml_active_languages', NULL, 'skip_missing=0');
1688 + if (empty($languages)) {
1689 + $this->form_fields['method_name'] = array(
1690 + 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
1691 + 'type' => 'text',
1692 + 'default' => __('SmartPOST Parcel Machine', 'wc_makecommerce_domain')
1693 + );
1694 + } else {
1695 + foreach ($languages as $language_code => $language) {
1696 + $language_name = !empty($language['translated_name']) ? $language['translated_name'] : $language_code;
1697 + $this->form_fields['method_name_'.$language_code] = array(
1698 + 'title' => __('Shipping Method Title', 'wc_makecommerce_domain').sprintf(' (%s)', $language_code),
1699 + 'type' => 'text',
1700 + 'default' => __('SmartPOST Parcel Machine', 'wc_makecommerce_domain')
1701 + );
1702 + }
1703 + }
1704 + $this->form_fields['prioritization'] = array(
1548 1705 'title' => __('Prioritize', 'wc_makecommerce_domain'),
1549 1706 'type' => 'checkbox',
1550 1707 'label' => __('Bigger cities will be on top of list, others sorted alphabetically', 'wc_makecommerce_domain'),
1551 1708 'default' => 'yes'
1552 - ),
1553 - 'short_office_names' => array(
1709 + );
1710 + $this->form_fields['short_office_names'] = array(
1554 1711 'title' => __('Short names', 'wc_makecommerce_domain'),
1555 1712 'type' => 'checkbox',
1556 1713 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'),
1557 1714 'default' => 'no'
1558 - ),
1559 - 'api_access' => array( 'type' => 'title', 'title' => '<br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into smartpost.ee system and print the out the package labels right here, at the shop orders view. <br> Please set your smartpost.ee account credentials below here. <br>(See more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api'))),
1560 - 'service_user' => array(
1715 + );
1716 + $this->form_fields['api_access'] = array( 'type' => 'title', 'title' => '<br>'.__('API access for', 'wc_makecommerce_domain').' '.$this->ext, 'description' => sprintf(__('You can automatically create shipments into smartpost.ee system and print the out the package labels right here, at the shop orders view. <br> Please set your smartpost.ee account credentials below here. <br>(See more on <a href="https://makecommerce.net/en/integration-modules/makecommerce-woocommerce-payment-plugin/#carriers-integration">MakeCommerce plugin page</a>. Don\'t forget to enable also <a href="%s">MC API keys</a>!)', 'wc_makecommerce_domain'), admin_url('admin.php?page=wc-settings&tab=api&section=mk_api')));
1717 + $this->form_fields['service_user'] = array(
1561 1718 'title' => __('eteenindus.smartpost.ee username', 'wc_makecommerce_domain'),
1562 1719 'type' => 'text',
1563 1720 'default' => ''
1564 - ),
1565 - 'service_password' => array(
1721 + );
1722 + $this->form_fields['service_password'] = array(
1566 1723 'title' => __('eteenindus.smartpost.ee password', 'wc_makecommerce_domain'),
1567 1724 'type' => 'text',
1568 1725 'default' => ''
1569 - ),
1570 - 'return_address' => array( 'type' => 'title', 'title' => __('Return address', 'wc_makecommerce_domain'), 'description' => __('Please define return address for SmartPOST shipments (used on parcel labels)', 'wc_makecommerce_domain')),
1571 - 'shop_name' => array(
1726 + );
1727 + $this->form_fields['return_address'] = array( 'type' => 'title', 'title' => __('Return address', 'wc_makecommerce_domain'), 'description' => __('Please define return address for SmartPOST shipments (used on parcel labels)', 'wc_makecommerce_domain'));
1728 + $this->form_fields['shop_name'] = array(
1572 1729 'type' => 'text',
1573 1730 'title' => __('Shop name', 'wc_makecommerce_domain'),
1574 1731 'class' => 'input-text regular-input',
1575 - ),
1576 - 'shop_phone' => array(
1732 + );
1733 + $this->form_fields['shop_phone'] = array(
1577 1734 'type' => 'text',
1578 1735 'title' => __('Shop phone', 'wc_makecommerce_domain'),
1579 1736 'class' => 'input-text regular-input',
1580 - ),
1581 - 'shop_email' => array(
1737 + );
1738 + $this->form_fields['shop_email'] = array(
1582 1739 'type' => 'text',
1583 1740 'title' => __('Shop email', 'wc_makecommerce_domain'),
1584 1741 'class' => 'input-text regular-input',
1585 - ),
1586 - /*'shop_postal_code' => array(
1587 - 'type' => 'text',
1588 - 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1589 - 'class' => 'input-text regular-input',
1590 - ),
1591 - */
1742 + );
1743 + $this->form_fields['shipping_ui_javascript'] = array(
1744 + 'type' => 'shipping_ui_javascript',
1592 1745 );
1593 1746 }
1594 1747
1595 1748 }
@@ -1661,17 +1814,17 @@
1661 1814 'desc' => __('Get it from <a href="https://merchant.maksekeskus.ee/api.html" target="_blank">Merchant Portal</a>','wc_makecommerce_domain'),
1662 1815 'class' => 'input-text regular-input',
1663 1816 ),
1664 1817 array(
1665 - 'id' => 'mk_public_key',
1818 + 'id' => 'mk_private_key',
1666 1819 'type' => 'text',
1667 - 'title' => __('Public key (live)', 'wc_makecommerce_domain'),
1820 + 'title' => __('Secret key (live)', 'wc_makecommerce_domain'),
1668 1821 'class' => 'input-text regular-input',
1669 - ),
1822 + ),
1670 1823 array(
1671 - 'id' => 'mk_private_key',
1824 + 'id' => 'mk_public_key',
1672 1825 'type' => 'text',
1673 - 'title' => __('Private key (live)', 'wc_makecommerce_domain'),
1826 + 'title' => __('Publishable key (live)', 'wc_makecommerce_domain'),
1674 1827 'class' => 'input-text regular-input',
1675 1828 ),
1676 1829 array(
1677 1830 'id' => 'mk_test_shop_id',
@@ -1678,25 +1831,29 @@
1678 1831 'type' => 'text',
1679 1832 'title' => __('Shop ID (test)', 'wc_makecommerce_domain'),
1680 1833 'class' => 'input-text regular-input',
1681 1834 'desc' => __('Get it from <a href="https://merchant-test.maksekeskus.ee/api.html" target="_blank">Merchant Portal Test</a>','wc_makecommerce_domain'),
1835 + ),
1836 + array(
1837 + 'id' => 'mk_test_private_key',
1838 + 'type' => 'text',
1839 + 'title' => __('Secret key (test)', 'wc_makecommerce_domain'),
1840 + 'class' => 'input-text regular-input',
1682 1841 ),
1683 1842 array(
1684 1843 'id' => 'mk_test_public_key',
1685 1844 'type' => 'text',
1686 - 'title' => __('Public key (test)', 'wc_makecommerce_domain'),
1845 + 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'),
1687 1846 'class' => 'input-text regular-input',
1688 1847 ),
1689 1848 array(
1690 - 'id' => 'mk_test_private_key',
1691 - 'type' => 'text',
1692 - 'title' => __('Private key (test)', 'wc_makecommerce_domain'),
1693 - 'class' => 'input-text regular-input',
1849 + 'id' => 'mk_javascript_ui',
1850 + 'type' => 'api_javascript_ui',
1694 1851 ),
1695 1852 array('type' => 'sectionend', 'id' => 'mk_api_settings')
1696 1853 );
1697 1854 }
1698 -
1855 +
1699 1856 function mk_admin_save_settings() {
1700 1857 // reload banklinks
1701 1858 global $current_section;
1702 1859 if ($current_section !== 'mk_api') {
@@ -1705,25 +1862,52 @@
1705 1862 $wcmc = New woocommerce_makecommerce(true);
1706 1863 $wcmc->mc_banklinks_reload(true);
1707 1864 }
1708 1865
1709 - function __get_logo_html() {
1710 - return '<div class="makecommerce-info">'.
1711 - '<div class="makecommerce-logo">'.
1712 - '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1713 - '</div>'.
1714 - '<div class="makecommerce-links">'.
1715 - '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1716 - '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1717 - '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1718 - '</div>'.
1719 - '</div>';
1720 - }
1866 + function __get_logo_html() {
1867 + return '<div class="makecommerce-info">'.
1868 + '<div class="makecommerce-logo">'.
1869 + '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1870 + '</div>'.
1871 + '<div class="makecommerce-links">'.
1872 + '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1873 + '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1874 + '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1875 + '</div>'.
1876 + '</div>';
1877 + }
1721 1878
1722 1879 add_action('woocommerce_get_sections_api', 'mk_admin_add_settings');
1723 1880 add_filter('woocommerce_get_settings_api', 'mk_admin_all_settings', 10, 2);
1724 1881 add_action('woocommerce_settings_saved', 'mk_admin_save_settings', 30, 0);
1882 + add_action('woocommerce_admin_field_api_javascript_ui', 'api_javascript_ui');
1883 + function api_javascript_ui( $data ) {
1884 + ?>
1885 + <script type="text/javascript">
1886 + jQuery(document).ready(function($) {
1887 + var env_select = $('#mk_api_type');
1888 + var test_fields = ['mk_test_shop_id', 'mk_test_private_key', 'mk_test_public_key'];
1889 + var live_fields = ['mk_shop_id', 'mk_private_key', 'mk_public_key'];
1725 1890
1891 + env_select.on('change', function(){
1892 + hideFileds($(this).val());
1893 + });
1894 + hideFileds(env_select.val());
1895 + function hideFileds(type) {
1896 + var hide = type == 'live' ? test_fields : live_fields;
1897 + var show = type == 'live' ? live_fields : test_fields;
1898 + $.each(hide, function(i, elem) {
1899 + $('#'+elem).closest('tr').hide();
1900 + });
1901 + $.each(show, function(i, elem) {
1902 + $('#'+elem).closest('tr').show();
1903 + });
1904 + }
1905 + });
1906 + </script>
1907 + <?php
1908 + }
1909 +
1726 1910 function mk_admin_restrict_manage_posts() {
1727 1911 global $typenow;
1728 1912 if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) {
1729 1913 $selected_method = !empty($_REQUEST['_shipping_method']) ? $_REQUEST['_shipping_method'] : false;
@@ -1755,10 +1939,9 @@
1755 1939 add_filter('posts_where', 'mk_admin_shipping_filter', 10, 2);
1756 1940
1757 1941 function mk_admin_bulk_actions() {
1758 1942 global $post_type;
1759 - if ('shop_order' === $post_type) {
1760 -?>
1943 + if ('shop_order' === $post_type) { ?>
1761 1944 <script type="text/javascript">
1762 1945 jQuery(function() {
1763 1946 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1764 1947 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
@@ -1765,18 +1948,15 @@
1765 1948 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1766 1949 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
1767 1950 });
1768 1951 </script>
1769 -<?php
1770 - if (!empty($_REQUEST['mk_pdf'])) {
1771 -?>
1772 - <script type="text/javascript">
1773 - jQuery(function(){
1774 - window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1775 - });
1776 - </script>
1777 -<?php
1778 - }
1952 + <?php if (!empty($_REQUEST['mk_pdf'])) { ?>
1953 + <script type="text/javascript">
1954 + jQuery(function(){
1955 + window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1956 + });
1957 + </script>
1958 + <?php }
1779 1959 }
1780 1960 }
1781 1961 function mk_admin_bulk_action_labels() {
1782 1962 $wp_list_table = _get_list_table('WP_Posts_List_Table');
@@ -1861,13 +2041,23 @@
1861 2041 'label' => __('Does not fit parcel machine', 'wc_makecommerce_domain'),
1862 2042 'description' => __('When this is checked, parcel machine shipping option is not available for a cart with this product', 'wc_makecommerce_domain')
1863 2043 )
1864 2044 );
2045 + woocommerce_wp_checkbox(
2046 + array(
2047 + 'id' => '_no_shipping_cost',
2048 + 'wrapper_class' => 'show_if_simple',
2049 + 'label' => __('Free parcel machine', 'wc_makecommerce_domain'),
2050 + 'description' => __('When this is checked, parcel machine if free for this product', 'wc_makecommerce_domain')
2051 + )
2052 + );
1865 2053 echo '</div>';
1866 2054 }
1867 2055 function mk_admin_product_fields_save($post_id) {
1868 2056 $no_parcel_machine = isset($_POST['_no_parcel_machine']) ? 'yes' : 'no';
1869 2057 update_post_meta($post_id, '_no_parcel_machine', $no_parcel_machine);
2058 + $no_shipping_cost = isset($_POST['_no_shipping_cost']) ? 'yes' : 'no';
2059 + update_post_meta($post_id, '_no_shipping_cost', $no_shipping_cost);
1870 2060 }
1871 2061
1872 2062 add_action('woocommerce_product_options_shipping', 'mk_admin_product_option_fields');
1873 2063 add_action('woocommerce_process_product_meta', 'mk_admin_product_fields_save');
@@ -1949,18 +2139,12 @@
1949 2139 }
1950 2140 }
1951 2141 }
1952 2142
1953 - function mk_get_labels($post_ids) {
2143 + function mk_get_labels($post_ids, $ajax = false) {
1954 2144 if (!is_array($post_ids)) {
1955 2145 $post_ids = array($post_ids);
1956 2146 }
1957 - $sender = array(
1958 - 'name' => get_option('mk_shop_name', ''),
1959 - 'phone' => get_option('mk_shop_phone', ''),
1960 - 'email' => get_option('mk_shop_email', ''),
1961 - 'postalCode' => get_option('mk_shop_postal_code', '')
1962 - );
1963 2147 parcelmachine_add_method();
1964 2148 $shipping_request = array('credentials' => array(), 'orders' => array(), 'printFormat' => 'A4');
1965 2149 foreach ($post_ids as $post_id) {
1966 2150 $parcel_machine = get_post_meta($post_id, '_parcel_machine', true);
@@ -1989,8 +2173,14 @@
1989 2173 }
1990 2174 $order = wc_get_order($post_id);
1991 2175 $shipment_id = get_post_meta($post_id, '_parcel_machine_shipment_id', true);
1992 2176 if (!$shipment_id) { continue; }
2177 + $sender = array(
2178 + 'name' => $transport_class->settings['shop_name'],
2179 + 'phone' => $transport_class->settings['shop_phone'],
2180 + 'email' => $transport_class->settings['shop_email'],
2181 + 'postalCode' => $transport_class->settings['shop_postal_code']
2182 + );
1993 2183 $shipping_request['orders'][] = array(
1994 2184 'carrier' => $provider_uc,
1995 2185 'orderId' => $order->id,
1996 2186 'destination' => array('destinationId' => $machine_id),
@@ -2015,8 +2205,11 @@
2015 2205 }
2016 2206 if (empty($response->labelUrl)) {
2017 2207 return;
2018 2208 }
2209 + if($ajax) {
2210 + return $response->labelUrl;
2211 + }
2019 2212 $sendback = add_query_arg(array('post_type' => 'shop_order', 'mk_pdf' => urlencode($response->labelUrl)), '');
2020 2213 wp_redirect(esc_url_raw($sendback));
2021 2214 exit();
2022 2215 }
@@ -2032,9 +2225,13 @@
2032 2225 $mk_api_type = get_option('mk_api_type', false);
2033 2226 if (!$mk_api_type) {
2034 2227 return false;
2035 2228 }
2036 - $key_prefix = $mk_api_type.'_';
2229 + if ($mk_api_type !== 'live') {
2230 + $key_prefix = $mk_api_type.'_';
2231 + } else {
2232 + $key_prefix = '';
2233 + }
2037 2234 $mk_shop_id = get_option('mk_'.$key_prefix.'shop_id', '');
2038 2235 $mk_public_key = get_option('mk_'.$key_prefix.'public_key', '');
2039 2236 $mk_private_key = get_option('mk_'.$key_prefix.'private_key', '');
2040 2237 if (!$mk_shop_id || !$mk_public_key || !$mk_shop_id) {
@@ -2059,9 +2256,9 @@
2059 2256 }
2060 2257 foreach ($data as $machine) {
2061 2258 if ($machine->country === $country && $machine->type === 'APT' && ($provider === '*' || strtolower($provider) === strtolower($machine->provider))) {
2062 2259 $machines[] = array(
2063 - 'provider' => strtolower($machine->provider),
2260 + 'carrier' => strtolower($machine->provider),
2064 2261 'id' => $machine->id,
2065 2262 'name' => $machine->name,
2066 2263 'city' => $machine->city,
2067 2264 'address' => !empty($machine->address) ? $machine->address : '',
@@ -2079,9 +2276,9 @@
2079 2276
2080 2277 function mk_get_machine($provider, $id) {
2081 2278 $machines = mk_get_machines($provider);
2082 2279 foreach ($machines as $machine) {
2083 - if ($machine['provider'] === $provider && $machine['id'] === $id) {
2280 + if ($machine['carrier'] === $provider && $machine['id'] === $id) {
2084 2281 return $machine;
2085 2282 }
2086 2283 }
2087 2284 return false;
@@ -2088,5 +2285,61 @@
2088 2285 }
2089 2286 function mk_admin_error() {
2090 2287 printf( '<div class="%1$s"><p>%2$s</p></div>', 'notice notice-error', __('Please check that you have configured correctly MakeCommerce API accesses', 'wc_makecommerce_domain'));
2091 2288 }
2289 +
2290 + add_filter('query_vars', 'mk_cron_query_vars');
2291 + add_action('parse_request', 'mk_parse_cron_update_vars');
2292 + function mk_cron_query_vars($vars) {
2293 + $vars[] = 'mk-action';
2294 + $vars[] = 'mk-shop-id';
2295 + $vars[] = 'mk-test-shop-id';
2296 + return $vars;
2297 + }
2298 + function mk_parse_cron_update_vars($wp) {
2299 + if (array_key_exists('mk-action', $wp->query_vars) && $wp->query_vars['mk-action'] == 'mk-update'
2300 + && (array_key_exists('mk-shop-id', $wp->query_vars) || array_key_exists('mk-test-shop-id', $wp->query_vars) ) ) {
2301 + if( (strlen($wp->query_vars['mk-shop-id']) && $wp->query_vars['mk-shop-id'] == get_option('mk_shop_id', false) )
2302 + || (strlen($wp->query_vars['mk-test-shop-id']) && $wp->query_vars['mk-test-shop-id'] == get_option('mk_test_shop_id', false) ) ) {
2303 + $obj = new woocommerce_makecommerce();
2304 + $obj->mc_banklinks_reload(true);
2305 + exit();
2306 + }
2307 + }
2308 + }
2309 + function print_parcel_machine_label_action( $post_id ) {
2310 + ?>
2311 + <li class="wide">
2312 + <a id="print_parcel_machine_label" href="#" class="button"><?php _e('Print parcel label', 'wc_makecommerce_domain');?></a>
2313 + <img class="mc_loading" src="<?php echo site_url('/wp-admin/images/loading.gif');?>">
2314 + <script type="text/javascript">
2315 + jQuery(function($){
2316 + var data = {
2317 + 'action': 'print_pml',
2318 + 'id': '<?php echo $post_id; ?>'
2319 + };
2320 + var loading = $('.mc_loading');
2321 + $('#print_parcel_machine_label').click(function(e){
2322 + e.preventDefault();
2323 + var button = $(this);
2324 + button.addClass('disabled');
2325 + loading.show();
2326 + $.post(ajaxurl, data, function(response) {
2327 + button.removeClass('disabled');
2328 + loading.hide();
2329 + window.open(response, 'pdf');
2330 + });
2331 + });
2332 + });
2333 + </script>
2334 + </li>
2335 + <?php
2336 + }
2337 + add_action('woocommerce_order_actions_end', 'print_parcel_machine_label_action');
2338 + function ajax_print_pml() {
2339 + if(!current_user_can('manage_woocommerce') ) {
2340 + die();
2341 + }
2342 + die(mk_get_labels(intval($_POST['id']), true));
2343 + }
2344 + add_action( 'wp_ajax_print_pml', 'ajax_print_pml' );
2092 2345 }