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