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 +496 -238 1.01.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
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
@@ -486,14 +533,21 @@
486 533 'platform' => 'wordpress '.$wp_version,
487 534 'module' => $this->id.' '.$this->version,
488 535 )),
489 536 );
537 +
538 + if (!$this->_api) {
539 + return false;
540 + }
490 541
491 542 try {
492 - $methods = $this->_api->getShopConfig($request_params)->paymentMethods;
543 + $shopConfig = $this->_api->getShopConfig($request_params);
544 + $methods = $shopConfig->payment_methods;
493 545 } catch (Exception $e) {
546 + error_log(print_r($e, 1));
494 547 return false;
495 548 }
549 +
496 550 if(isset($methods->banklinks)) {
497 551 foreach($methods->banklinks as $method) {
498 552 $wpdb->insert($tableName, array('type' => 'banklink', 'country' => $method->country, 'name' => $method->name, 'url' => $method->url));
499 553 }
@@ -505,11 +559,17 @@
505 559 $wpdb->insert($tableName, array('type' => 'card', 'name' => $method->name));
506 560 }
507 561 $updated = true;
508 562 }
563 +
564 + if(isset($shopConfig) && strlen($shopConfig->name)) {
565 + update_option( 'mc_shop_name', $shopConfig->name );
566 + }
567 +
509 568 if ($updated) {
510 569 update_option( 'mc_banklinks_api_type', get_option('mk_api_type', false) );
511 570 }
571 +
512 572 if ($force) {
513 573 $this->initBankLinks();
514 574 return $updated;
515 575 }
@@ -640,8 +700,9 @@
640 700 <?php
641 701 }
642 702 ?>
643 703 </ul>
704 + <div class="mc-clear-both"></div>
644 705 <script type="text/javascript">
645 706 var makecommerceId = '<?php echo $this->id; ?>';
646 707 var selectedCountry = jQuery('input[name=makecommerce_country_picker]:checked').val();
647 708
@@ -760,9 +821,9 @@
760 821
761 822 $posA = array_search($a->name, $order);
762 823 $posB = array_search($b->name, $order);
763 824
764 - if($posA === $posB) return 0;
825 + if($posA === $posB) return $a->id > $b->id ? 1 : -1;
765 826 if($posA === FALSE) return 1;
766 827 if($posB === FALSE) return -1;
767 828
768 829 return $posA > $posB ? 1 : -1;
@@ -905,9 +966,9 @@
905 966 }
906 967
907 968 protected function _getOrderConfirmationUrl($order) {
908 969 //$url = add_query_arg('order', $order->id, add_query_arg('key', $order->order_key, get_permalink(get_option('woocommerce_pay_page_id'))));
909 - $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))));
910 971 return $url;
911 972 }
912 973
913 974 function receipt_page($orderId) {
@@ -927,14 +988,14 @@
927 988 'key' => $this->_api->getPublishableKey(),
928 989 'transaction' => $transactionId,
929 990 'selector' => '#submit_banklinkmakecommerce_payment_form',
930 991 'amount' => round($order->order_total, 2),
931 - '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))),
932 993 'open-on-load' => 'true',
933 994 'client-name' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) ($order->billing_first_name . ' ' . $order->billing_last_name) : ''),
934 995 'email' => ($this->settings['cc_pass_cust_data'] == 'yes' ? (string) $order->billing_email : ''),
935 - 'name' => $this->settings['cc_shop_name'],
936 - '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,
937 998 'completed' => 'makecommerce_cc_complete',
938 999 'currency' => 'EUR',
939 1000 );
940 1001 ?>
@@ -1233,8 +1294,11 @@
1233 1294 $this->init_settings();
1234 1295
1235 1296 $this->enable = $this->settings['active'];
1236 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 + }
1237 1301 $this->availability = 'specific';
1238 1302 $this->countries = $this->settings['countries'];
1239 1303 $this->prioritization = $this->settings['prioritization'];
1240 1304 $this->free_shipping_min_amount = $this->settings['free_shipping_min_amount'];
@@ -1242,19 +1306,62 @@
1242 1306 $this->short_office_names = $this->settings['short_office_names'];
1243 1307 $this->order_country = 'unknown';
1244 1308 add_action('woocommerce_update_options_shipping_' . $this->id, array(&$this, 'process_admin_options'));
1245 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'));
1246 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'));
1247 1313 add_action('woocommerce_checkout_update_order_meta', array(&$this, 'add_parcelmachine_order_meta'));
1248 - 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'));
1249 1315 }
1250 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 +
1251 1348 function calculate_shipping($package = array()) {
1349 + $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1252 1350
1253 - $price = $this->settings['price_'.strtolower($package['destination']['country'])];
1254 - 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) {
1255 1354 $price = 0;
1256 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 + }
1257 1364 $rate = array(
1258 1365 'id' => $this->id,
1259 1366 'label' => $this->title,
1260 1367 'cost' => $price,
@@ -1328,38 +1435,43 @@
1328 1435 }
1329 1436 return $machines;
1330 1437 }
1331 1438
1332 - function add_parcelmachine_checkout_fields($checkout) {
1439 + function add_parcelmachine_checkout_fields($fragments) {
1333 1440 $this->order_country = WC()->customer->get_shipping_country();
1334 - echo '<tr style="display: none;" class="parcel_machine_checkout" id="parcel_machine_checkout_parcelmachine_'.mb_strtolower($this->ext).'"><th>' . $this->title . '</th>';
1335 - 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">';
1336 1446 $options = array();
1337 1447 $machines = $this->mk_get_machines();
1338 - echo '<p class="form-row" id="'.esc_attr($this->id).'_field">';
1339 - 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>';
1340 1451 $pcity = false;
1341 1452 foreach ($machines as $machine) {
1342 1453 $city = strtolower($machine['city']);
1343 1454 if ($city !== $pcity) {
1344 - if ($pcity) echo '</optgroup>';
1345 - echo '<optgroup label="'.$machine['city'].'">';
1455 + if ($pcity) $res .= '</optgroup>';
1456 + $res .= '<optgroup label="'.$machine['city'].'">';
1346 1457 }
1347 1458 $mname = $machine['name'];
1348 1459 if ($this->short_office_names !== 'yes') $mname .= ' - ' . $machine['city'] . ', ' . $machine['address'];
1349 - echo '<option value="'.esc_attr($machine['provider'].'||'.$machine['id']).'">'.$mname.'</option>';
1460 + $res .= '<option value="'.esc_attr($machine['carrier'].'||'.$machine['id']).'">'.$mname.'</option>';
1350 1461 $pcity = $city;
1351 1462 }
1352 - if ($pcity) echo '</optgroup>';
1353 - echo '</select>';
1354 - echo '</p>';
1355 - echo '</td></tr>';
1463 + if ($pcity) $res .= '</optgroup>';
1464 + $res .= '</select>';
1465 + $res .= '</p>';
1466 + $res .= '</td></tr>';
1467 + echo $res;
1356 1468 }
1357 1469
1358 1470 function check_parcelmachine_checkout_fields() {
1359 1471 $shipping_method = !empty($_POST['shipping_method']) ? $_POST['shipping_method'] : false;
1360 1472 if (!empty($shipping_method[0])) { $shipping_method = $shipping_method[0]; }
1361 - if ($shipping_method === $this->id && empty($_POST['parcel_machine_itella'])) {
1473 + if ($shipping_method === $this->id && empty($_POST[$shipping_method])) {
1362 1474 wc_add_notice(__('<strong>Parcel machine</strong> is a required field.'), 'error');
1363 1475 }
1364 1476 }
1365 1477 function add_parcelmachine_order_meta($order_id) {
@@ -1369,24 +1481,11 @@
1369 1481 update_post_meta($order_id, '_parcel_machine', sanitize_text_field($_POST[$this->id]));
1370 1482 }
1371 1483 }
1372 1484 function add_admin_parcelmachine_via_field($order) {
1373 - error_log('Via');
1374 - error_log(print_r($order, 1));
1485 + return ' <small>(via '.$this->name_ext.')</small>';
1375 1486 }
1376 1487 }
1377 - function __get_logo_html() {
1378 - return '<div class="makecommerce-info">'.
1379 - '<div class="makecommerce-logo">'.
1380 - '<a target="_blank" href="http://maksekeskus.ee"><img src="'. plugins_url('/images/makecommerce_logo_en.svg', __FILE__) .'" class="makecommerce-logo"></a>'.
1381 - '</div>'.
1382 - '<div class="makecommerce-links">'.
1383 - '<div class="makecommerce-link"><a target="_blank" href="https://merchant.maksekeskus.ee">Merchant Portal</a></div>'.
1384 - '<div class="makecommerce-link"><a target="_blank" href="https://makecommerce.net/">makecommerce.net</a></div>'.
1385 - '<div class="makecommerce-link"><a target="_blank" href="http://maksekeskus.ee">maksekeskus.ee</a></div>'.
1386 - '</div>'.
1387 - '</div>';
1388 - }
1389 1488 class WC_ParcelMachine_Shipping_Method_Omniva extends WC_ParcelMachine_Shipping_Method {
1390 1489 function __construct($instance_id = 0) {
1391 1490 $this->ext = 'Omniva';
1392 1491 $this->name_ext = 'Omniva';
@@ -1393,108 +1492,139 @@
1393 1492 parent::__construct();
1394 1493 }
1395 1494 function init_form_fields() {
1396 1495
1397 - $this->form_fields = array(
1398 - 'logo' => array('type' => 'title', 'title' => __get_logo_html()),
1399 - 'generic' => array('type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain')),
1400 - '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(
1401 1504 'title' => __('Enable', 'wc_makecommerce_domain'),
1402 1505 'type' => 'checkbox',
1403 1506 'label' => __('enabled', 'wc_makecommerce_domain'),
1404 1507 'default' => 'no',
1405 - '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'),
1406 - ),
1407 - 'price_ee' => array(
1408 - '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',
1409 1520 'type' => 'text',
1410 1521 'default' => '2.99'
1411 - ),
1412 - 'price_lv' => array(
1413 - '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',
1414 1531 'type' => 'text',
1415 1532 'default' => '7.99'
1416 - ),
1417 - 'price_lt' => array(
1418 - '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',
1419 1542 'type' => 'text',
1420 1543 'default' => '8.99'
1421 - ),
1422 - //'price_fi' => array(
1423 - // 'title' => __('Price FI', 'wc_makecommerce_domain'),
1424 - // 'type' => 'text',
1425 - // 'default' => '10.99'
1426 - //),
1427 - 'free_shipping_min_amount' => array(
1428 - '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',
1429 1547 'type' => 'number',
1430 1548 'default' => '0',
1431 - 'description' => '(0 means no free shipping)'
1432 - ),
1433 - 'maximum_weight' => array(
1549 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1550 + );
1551 + $this->form_fields['maximum_weight'] = array(
1434 1552 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1435 1553 'type' => 'text',
1436 1554 'default' => '15'
1437 - ),
1438 - 'countries' => array(
1439 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1440 - 'type' => 'multiselect',
1441 - 'class' => 'wp-enhanced-select',
1442 - 'css' => 'width: 450px;',
1443 - 'default' => array('EE','LV','LT'),
1444 - 'options' => array('EE' => __('Estonia'), 'LV' => __('Latvia'), 'LT' => __('Lithuania')),
1445 - ),
1446 - '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')),
1447 - 'method_name' => array(
1448 - 'title' => __('Shipping Method Title', 'wc_makecommerce_domain'),
1449 - 'type' => 'text',
1450 - 'default' => __('Omniva Parcel Machine', 'wc_makecommerce_domain')
1451 - ),
1452 - '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(
1453 1576 'title' => __('Prioritize', 'wc_makecommerce_domain'),
1454 1577 'type' => 'checkbox',
1455 1578 'label' => __('Bigger cities will be on top of list, others sorted alphabetically', 'wc_makecommerce_domain'),
1456 1579 'default' => 'yes'
1457 - ),
1458 - 'short_office_names' => array(
1580 + );
1581 + $this->form_fields['short_office_names'] = array(
1459 1582 'title' => __('Short names', 'wc_makecommerce_domain'),
1460 1583 'type' => 'checkbox',
1461 1584 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'),
1462 1585 'default' => 'no'
1463 - ),
1464 - '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'))),
1465 - '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(
1466 1589 'title' => __('Omniva web services username', 'wc_makecommerce_domain'),
1467 1590 'type' => 'text',
1468 1591 'default' => ''
1469 - ),
1470 - 'service_password' => array(
1592 + );
1593 + $this->form_fields['service_password'] = array(
1471 1594 'title' => __('Omniva web services password', 'wc_makecommerce_domain'),
1472 1595 'type' => 'text',
1473 1596 'default' => ''
1474 - ),
1475 - 'return_address' => array( 'type' => 'title', 'title' => __('Return address', 'wc_makecommerce_domain'), 'description' => __('Please define return address for Omniva shipments', 'wc_makecommerce_domain')),
1476 - '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(
1477 1600 'type' => 'text',
1478 1601 'title' => __('Shop name', 'wc_makecommerce_domain'),
1479 1602 'class' => 'input-text regular-input',
1480 - ),
1481 - 'shop_phone' => array(
1603 + );
1604 + $this->form_fields['shop_phone'] = array(
1482 1605 'type' => 'text',
1483 1606 'title' => __('Shop phone', 'wc_makecommerce_domain'),
1484 1607 'class' => 'input-text regular-input',
1485 - ),
1486 - 'shop_email' => array(
1608 + );
1609 + $this->form_fields['shop_email'] = array(
1487 1610 'type' => 'text',
1488 1611 'title' => __('Shop email', 'wc_makecommerce_domain'),
1489 1612 'class' => 'input-text regular-input',
1490 - ),
1491 - 'shop_postal_code' => array(
1613 + );
1614 + $this->form_fields['shop_address_city'] = array(
1492 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',
1493 1621 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1494 1622 'class' => 'input-text regular-input',
1495 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')
1496 - ),
1624 + );
1625 + $this->form_fields['shipping_ui_javascript'] = array(
1626 + 'type' => 'shipping_ui_javascript',
1497 1627 );
1498 1628 }
1499 1629
1500 1630 }
@@ -1506,98 +1636,113 @@
1506 1636 }
1507 1637 function init_form_fields() {
1508 1638 global $woocommerce;
1509 1639
1510 - $this->form_fields = array(
1511 - 'logo' => array('type' => 'title', 'title' => __get_logo_html()),
1512 - 'generic' => array( 'type' => 'title', 'title' => __('Generic and pricing options', 'wc_makecommerce_domain')),
1513 - '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(
1514 1644 'title' => __('Enable', 'wc_makecommerce_domain'),
1515 1645 'type' => 'checkbox',
1516 1646 'label' => __('enabled', 'wc_makecommerce_domain'),
1517 1647 'default' => 'no',
1518 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'),
1519 - ),
1520 - 'price_ee' => array(
1521 - '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',
1522 1660 'type' => 'text',
1523 1661 'default' => '2.99'
1524 - ),
1525 - 'price_fi' => array(
1526 - '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',
1527 1671 'type' => 'text',
1528 1672 'default' => '10.99'
1529 - ),
1530 - 'free_shipping_min_amount' => array(
1531 - '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',
1532 1676 'type' => 'number',
1533 1677 'default' => '0',
1534 - 'description' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1535 - ),
1536 - 'maximum_weight' => array(
1678 + 'desc_tip' => __('(0 means no free shipping)', 'wc_makecommerce_domain'),
1679 + );
1680 + $this->form_fields['maximum_weight'] = array(
1537 1681 'title' => __('Maximum weight allowed for shipping', 'wc_makecommerce_domain'),
1538 1682 'type' => 'text',
1539 1683 'default' => '15'
1540 - ),
1541 - 'countries' => array(
1542 - 'title' => __('Specific Countries', 'wc_makecommerce_domain'),
1543 - 'type' => 'multiselect',
1544 - 'class' => 'wp-enhanced-select',
1545 - 'css' => 'width: 450px;',
1546 - 'default' => array('EE','FI'),
1547 - 'options' => array('EE' => __('Estonia'), 'FI' => __('Finland')),
1548 - ),
1549 - 'look_and_feel' => array( 'type' => 'title', 'title' => __('Look and feel options', 'wc_makecommerce_domain'), 'description' => __('Options for presentation on checkout page', 'wc_makecommerce_domain')),
1550 - 'method_name' => array(
1551 - 'title' => __('Method Title', 'wc_makecommerce_domain'),
1552 - 'type' => 'text',
1553 - 'default' => __('SmartPOST Parcel Machine', 'wc_makecommerce_domain')
1554 - ),
1555 - '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(
1556 1705 'title' => __('Prioritize', 'wc_makecommerce_domain'),
1557 1706 'type' => 'checkbox',
1558 1707 'label' => __('Bigger cities will be on top of list, others sorted alphabetically', 'wc_makecommerce_domain'),
1559 1708 'default' => 'yes'
1560 - ),
1561 - 'short_office_names' => array(
1709 + );
1710 + $this->form_fields['short_office_names'] = array(
1562 1711 'title' => __('Short names', 'wc_makecommerce_domain'),
1563 1712 'type' => 'checkbox',
1564 1713 'label' => __('Display only parcel machine names, without addresses', 'wc_makecommerce_domain'),
1565 1714 'default' => 'no'
1566 - ),
1567 - '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'))),
1568 - '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(
1569 1718 'title' => __('eteenindus.smartpost.ee username', 'wc_makecommerce_domain'),
1570 1719 'type' => 'text',
1571 1720 'default' => ''
1572 - ),
1573 - 'service_password' => array(
1721 + );
1722 + $this->form_fields['service_password'] = array(
1574 1723 'title' => __('eteenindus.smartpost.ee password', 'wc_makecommerce_domain'),
1575 1724 'type' => 'text',
1576 1725 'default' => ''
1577 - ),
1578 - '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')),
1579 - '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(
1580 1729 'type' => 'text',
1581 1730 'title' => __('Shop name', 'wc_makecommerce_domain'),
1582 1731 'class' => 'input-text regular-input',
1583 - ),
1584 - 'shop_phone' => array(
1732 + );
1733 + $this->form_fields['shop_phone'] = array(
1585 1734 'type' => 'text',
1586 1735 'title' => __('Shop phone', 'wc_makecommerce_domain'),
1587 1736 'class' => 'input-text regular-input',
1588 - ),
1589 - 'shop_email' => array(
1737 + );
1738 + $this->form_fields['shop_email'] = array(
1590 1739 'type' => 'text',
1591 1740 'title' => __('Shop email', 'wc_makecommerce_domain'),
1592 1741 'class' => 'input-text regular-input',
1593 - ),
1594 - /*'shop_postal_code' => array(
1595 - 'type' => 'text',
1596 - 'title' => __('Shop postal code', 'wc_makecommerce_domain'),
1597 - 'class' => 'input-text regular-input',
1598 - ),
1599 - */
1742 + );
1743 + $this->form_fields['shipping_ui_javascript'] = array(
1744 + 'type' => 'shipping_ui_javascript',
1600 1745 );
1601 1746 }
1602 1747
1603 1748 }
@@ -1669,17 +1814,17 @@
1669 1814 'desc' => __('Get it from <a href="https://merchant.maksekeskus.ee/api.html" target="_blank">Merchant Portal</a>','wc_makecommerce_domain'),
1670 1815 'class' => 'input-text regular-input',
1671 1816 ),
1672 1817 array(
1673 - 'id' => 'mk_public_key',
1818 + 'id' => 'mk_private_key',
1674 1819 'type' => 'text',
1675 - 'title' => __('Public key (live)', 'wc_makecommerce_domain'),
1820 + 'title' => __('Secret key (live)', 'wc_makecommerce_domain'),
1676 1821 'class' => 'input-text regular-input',
1677 - ),
1822 + ),
1678 1823 array(
1679 - 'id' => 'mk_private_key',
1824 + 'id' => 'mk_public_key',
1680 1825 'type' => 'text',
1681 - 'title' => __('Private key (live)', 'wc_makecommerce_domain'),
1826 + 'title' => __('Publishable key (live)', 'wc_makecommerce_domain'),
1682 1827 'class' => 'input-text regular-input',
1683 1828 ),
1684 1829 array(
1685 1830 'id' => 'mk_test_shop_id',
@@ -1686,25 +1831,29 @@
1686 1831 'type' => 'text',
1687 1832 'title' => __('Shop ID (test)', 'wc_makecommerce_domain'),
1688 1833 'class' => 'input-text regular-input',
1689 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',
1690 1841 ),
1691 1842 array(
1692 1843 'id' => 'mk_test_public_key',
1693 1844 'type' => 'text',
1694 - 'title' => __('Public key (test)', 'wc_makecommerce_domain'),
1845 + 'title' => __('Publishable key (test)', 'wc_makecommerce_domain'),
1695 1846 'class' => 'input-text regular-input',
1696 1847 ),
1697 1848 array(
1698 - 'id' => 'mk_test_private_key',
1699 - 'type' => 'text',
1700 - 'title' => __('Private key (test)', 'wc_makecommerce_domain'),
1701 - 'class' => 'input-text regular-input',
1849 + 'id' => 'mk_javascript_ui',
1850 + 'type' => 'api_javascript_ui',
1702 1851 ),
1703 1852 array('type' => 'sectionend', 'id' => 'mk_api_settings')
1704 1853 );
1705 1854 }
1706 -
1855 +
1707 1856 function mk_admin_save_settings() {
1708 1857 // reload banklinks
1709 1858 global $current_section;
1710 1859 if ($current_section !== 'mk_api') {
@@ -1713,12 +1862,52 @@
1713 1862 $wcmc = New woocommerce_makecommerce(true);
1714 1863 $wcmc->mc_banklinks_reload(true);
1715 1864 }
1716 1865
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 + }
1878 +
1717 1879 add_action('woocommerce_get_sections_api', 'mk_admin_add_settings');
1718 1880 add_filter('woocommerce_get_settings_api', 'mk_admin_all_settings', 10, 2);
1719 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'];
1720 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 +
1721 1910 function mk_admin_restrict_manage_posts() {
1722 1911 global $typenow;
1723 1912 if ( in_array( $typenow, wc_get_order_types( 'order-meta-boxes' ) ) ) {
1724 1913 $selected_method = !empty($_REQUEST['_shipping_method']) ? $_REQUEST['_shipping_method'] : false;
@@ -1750,10 +1939,9 @@
1750 1939 add_filter('posts_where', 'mk_admin_shipping_filter', 10, 2);
1751 1940
1752 1941 function mk_admin_bulk_actions() {
1753 1942 global $post_type;
1754 - if ('shop_order' === $post_type) {
1755 -?>
1943 + if ('shop_order' === $post_type) { ?>
1756 1944 <script type="text/javascript">
1757 1945 jQuery(function() {
1758 1946 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1759 1947 jQuery('<option>').val('parcel_machine_labels').text('<?php _e( 'Register parcel machine shipments', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
@@ -1760,18 +1948,15 @@
1760 1948 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action"]');
1761 1949 jQuery('<option>').val('parcel_machine_print_labels').text('<?php _e( 'Print parcel machine labels', 'wc_makecommerce_domain' )?>').appendTo('select[name="action2"]');
1762 1950 });
1763 1951 </script>
1764 -<?php
1765 - if (!empty($_REQUEST['mk_pdf'])) {
1766 -?>
1767 - <script type="text/javascript">
1768 - jQuery(function(){
1769 - window.open('<?php echo $_REQUEST['mk_pdf'] ?>', 'pdf');
1770 - });
1771 - </script>
1772 -<?php
1773 - }
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 }
1774 1959 }
1775 1960 }
1776 1961 function mk_admin_bulk_action_labels() {
1777 1962 $wp_list_table = _get_list_table('WP_Posts_List_Table');
@@ -1856,13 +2041,23 @@
1856 2041 'label' => __('Does not fit parcel machine', 'wc_makecommerce_domain'),
1857 2042 'description' => __('When this is checked, parcel machine shipping option is not available for a cart with this product', 'wc_makecommerce_domain')
1858 2043 )
1859 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 + );
1860 2053 echo '</div>';
1861 2054 }
1862 2055 function mk_admin_product_fields_save($post_id) {
1863 2056 $no_parcel_machine = isset($_POST['_no_parcel_machine']) ? 'yes' : 'no';
1864 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);
1865 2060 }
1866 2061
1867 2062 add_action('woocommerce_product_options_shipping', 'mk_admin_product_option_fields');
1868 2063 add_action('woocommerce_process_product_meta', 'mk_admin_product_fields_save');
@@ -1944,18 +2139,12 @@
1944 2139 }
1945 2140 }
1946 2141 }
1947 2142
1948 - function mk_get_labels($post_ids) {
2143 + function mk_get_labels($post_ids, $ajax = false) {
1949 2144 if (!is_array($post_ids)) {
1950 2145 $post_ids = array($post_ids);
1951 2146 }
1952 - $sender = array(
1953 - 'name' => get_option('mk_shop_name', ''),
1954 - 'phone' => get_option('mk_shop_phone', ''),
1955 - 'email' => get_option('mk_shop_email', ''),
1956 - 'postalCode' => get_option('mk_shop_postal_code', '')
1957 - );
1958 2147 parcelmachine_add_method();
1959 2148 $shipping_request = array('credentials' => array(), 'orders' => array(), 'printFormat' => 'A4');
1960 2149 foreach ($post_ids as $post_id) {
1961 2150 $parcel_machine = get_post_meta($post_id, '_parcel_machine', true);
@@ -1984,8 +2173,14 @@
1984 2173 }
1985 2174 $order = wc_get_order($post_id);
1986 2175 $shipment_id = get_post_meta($post_id, '_parcel_machine_shipment_id', true);
1987 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 + );
1988 2183 $shipping_request['orders'][] = array(
1989 2184 'carrier' => $provider_uc,
1990 2185 'orderId' => $order->id,
1991 2186 'destination' => array('destinationId' => $machine_id),
@@ -2010,8 +2205,11 @@
2010 2205 }
2011 2206 if (empty($response->labelUrl)) {
2012 2207 return;
2013 2208 }
2209 + if($ajax) {
2210 + return $response->labelUrl;
2211 + }
2014 2212 $sendback = add_query_arg(array('post_type' => 'shop_order', 'mk_pdf' => urlencode($response->labelUrl)), '');
2015 2213 wp_redirect(esc_url_raw($sendback));
2016 2214 exit();
2017 2215 }
@@ -2027,9 +2225,13 @@
2027 2225 $mk_api_type = get_option('mk_api_type', false);
2028 2226 if (!$mk_api_type) {
2029 2227 return false;
2030 2228 }
2031 - $key_prefix = $mk_api_type.'_';
2229 + if ($mk_api_type !== 'live') {
2230 + $key_prefix = $mk_api_type.'_';
2231 + } else {
2232 + $key_prefix = '';
2233 + }
2032 2234 $mk_shop_id = get_option('mk_'.$key_prefix.'shop_id', '');
2033 2235 $mk_public_key = get_option('mk_'.$key_prefix.'public_key', '');
2034 2236 $mk_private_key = get_option('mk_'.$key_prefix.'private_key', '');
2035 2237 if (!$mk_shop_id || !$mk_public_key || !$mk_shop_id) {
@@ -2054,9 +2256,9 @@
2054 2256 }
2055 2257 foreach ($data as $machine) {
2056 2258 if ($machine->country === $country && $machine->type === 'APT' && ($provider === '*' || strtolower($provider) === strtolower($machine->provider))) {
2057 2259 $machines[] = array(
2058 - 'provider' => strtolower($machine->provider),
2260 + 'carrier' => strtolower($machine->provider),
2059 2261 'id' => $machine->id,
2060 2262 'name' => $machine->name,
2061 2263 'city' => $machine->city,
2062 2264 'address' => !empty($machine->address) ? $machine->address : '',
@@ -2074,9 +2276,9 @@
2074 2276
2075 2277 function mk_get_machine($provider, $id) {
2076 2278 $machines = mk_get_machines($provider);
2077 2279 foreach ($machines as $machine) {
2078 - if ($machine['provider'] === $provider && $machine['id'] === $id) {
2280 + if ($machine['carrier'] === $provider && $machine['id'] === $id) {
2079 2281 return $machine;
2080 2282 }
2081 2283 }
2082 2284 return false;
@@ -2083,5 +2285,61 @@
2083 2285 }
2084 2286 function mk_admin_error() {
2085 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'));
2086 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' );
2087 2345 }