Plugin Directory

Changeset 2974250


Ignore:
Timestamp:
10/03/2023 10:46:59 AM (2 years ago)
Author:
shindhl
Message:

Release 2.0.16

  • Added the possibility to add multiple shipments through the label panel
  • Update Expresser service time to reflect the correct new time
Location:
dhlpwc
Files:
36 edited
1 copied

Legend:

Unmodified
Added
Removed
  • dhlpwc/tags/2.0.16/README.md

    r2966997 r2974250  
    11# DHL Parcel for WooCommerce
     2 
     3v2.0.16
     4## Changes
     5- Added the possibility to add multiple shipments through the label panel
     6- Update Expresser service time to reflect the correct new time
    27 
    38v2.0.15
  • dhlpwc/tags/2.0.16/assets/css/dhlpwc.admin.css

    r2688414 r2974250  
    715715    display:block;
    716716}
     717
     718/* Sizes */
     719.dhlpwc-chosen-sizes {
     720    counter-reset: dhlpwc-parcel-counter 0;
     721}
     722.dhlpwc-parcel-counter:before {
     723    counter-increment: dhlpwc-parcel-counter 1;
     724    content: counter(dhlpwc-parcel-counter);
     725}
     726
     727.dhlpwc-chosen-size-template {
     728    display: none;
     729}
     730
     731.dhlpwc-order-metabox-form-parceltypes .dhlpwc-label-size-header {
     732    display: none;
     733}
     734
     735.dhlpwc-label-size-header {
     736    margin-top: 10px;
     737    font-weight: bold;
     738    font-size: small;
     739}
     740
     741.dhlpwc-chosen-size-container:nth-child(2) .dhlpwc-label-size-header {
     742    margin-top: 0;
     743}
     744
     745.dhlpwc-chosen-size-actions {
     746    float: left;
     747    margin: 5px 5px 0 0;
     748}
     749
     750.dhlpwc-form-sizes,
     751.dhlpwc-chosen-size-info,
     752.dhlpwc-form-size-selections-edit {
     753    overflow-x:hidden;
     754    white-space: nowrap;
     755    text-overflow: ellipsis;
     756}
     757
     758.dhlpwc-chosen-size-info .dhlpwc-chosen-size {
     759    display: block;
     760    font-weight: 600;
     761}
     762
     763.dhlpwc-chosen-sizes .dhlpwc-label-action {
     764    display: inline-block;
     765    text-indent: -9999px;
     766    position: relative;
     767    padding: 0 !important;
     768    height: 2em;
     769    width: 2em;
     770}
     771
     772.dhlpwc-chosen-sizes .dhlpwc-label-action::after {
     773    font-family: Dashicons;
     774    speak: none;
     775    font-weight: 400;
     776    font-variant: normal;
     777    text-transform: none;
     778    -webkit-font-smoothing: antialiased;
     779    margin: 0;
     780    text-indent: 0;
     781    position: absolute;
     782    top: 0;
     783    right: 0;
     784    width: 100%;
     785    height: 100%;
     786    text-align: center;
     787    content: "\f133";
     788    line-height: 1.85;
     789}
     790
     791.dhlpwc-chosen-sizes .dhlpwc-label-action.dhlpwc-label-edit-piece::after { content: "\f203";}
     792.dhlpwc-chosen-sizes .dhlpwc-label-action.dhlpwc-label-delete-piece::after { content: "\f182";}
  • dhlpwc/tags/2.0.16/assets/js/dhlpwc.metabox.js

    r2966997 r2974250  
    55
    66jQuery(document).ready(function($) {
    7     $(document.body).on('click', '#dhlpwc-label-create', function(e) {
    8         e.preventDefault();
    9 
    10         var label_size = $('.dhlpwc-label-create-size:checked').val();
     7    $(document.body).on('click', '#dhlpwc-label-add-piece', function(e) {
     8        var label_size = $('input[name=dhlpwc-label-create-size]:checked').val();
     9        var label_size_info = $('input[name=dhlpwc-label-create-size]:checked').nextAll('i').first().html();
     10
    1111        if (typeof label_size === "undefined" ) {
    1212            // TODO update alert to a more user friendly user feedback
     
    1414            return;
    1515        }
     16
     17        var new_label_piece = $('.dhlpwc-chosen-size-template').first().clone();
     18        new_label_piece.removeClass('dhlpwc-chosen-size-template');
     19        new_label_piece.addClass('dhlpwc-chosen-size-container');
     20        new_label_piece.find('.dhlpwc-chosen-size').html(label_size);
     21        new_label_piece.find('.dhlpwc-chosen-size + i').html(label_size_info);
     22
     23        new_label_piece.data({
     24            parcel_type: label_size,
     25            quantity: 1
     26        });
     27        new_label_piece.appendTo('.dhlpwc-chosen-sizes');
     28
     29        $(document.body).trigger('dhlpwc:update_package_counter');
     30
     31    }).on('click', '.dhlpwc-label-edit-piece', function(e) {
     32        e.preventDefault();
     33
     34        var container = $(this).closest('.dhlpwc-chosen-size-container');
     35        var chosen_size = container.data('parcel_type');
     36        var form_sizes = $('.dhlpwc-form-content.dhlpwc-form-sizes').clone();
     37
     38        // Randomize name
     39        form_sizes.find('input[type=radio]')
     40            .attr('name', 'dhlpwc-label-edit-size-' + Math.floor(Math.random() * 26) + Date.now())
     41            .removeClass('dhlpwc-label-create-size')
     42            .addClass('dhlpwc-label-edit-size')
     43            .each(function() {
     44                $(this).attr('checked', $(this).val() === chosen_size)
     45            });
     46
     47        container.find('.dhlpwc-chosen-size-selection').hide();
     48        container.find('.dhlpwc-form-size-selections-edit').show();
     49        container.find('.dhlpwc-form-size-selections-edit').html(form_sizes.html());
     50
     51    }).on('click', '.dhlpwc-form-size-selections-edit .dhlpwc-label-edit-size', function(e) {
     52        e.preventDefault();
     53
     54        var container = $(this).closest('.dhlpwc-chosen-size-container');
     55
     56        var label_size = $(this).val();
     57        var label_size_info = container.find('input.dhlpwc-label-edit-size[value="' + label_size + '"]').nextAll('i').first().html();
     58
     59        container.find('.dhlpwc-chosen-size').html(label_size);
     60        container.find('.dhlpwc-chosen-size + i').html(label_size_info);
     61        container.data({
     62            parcel_type: label_size,
     63            quantity: 1
     64        });
     65
     66        container.find('.dhlpwc-chosen-size-selection').show();
     67        container.find('.dhlpwc-form-size-selections-edit').hide();
     68
     69    }).on('click', '.dhlpwc-label-delete-piece', function(e) {
     70        e.preventDefault();
     71
     72        var container = $(this).closest('.dhlpwc-chosen-size-container');
     73        container.remove();
     74
     75        $(document.body).trigger('dhlpwc:update_package_counter');
     76
     77    }).on('click', '#dhlpwc-label-create', function(e) {
     78        e.preventDefault();
    1679
    1780        var label_options = [];
     
    3295            security: $( '#dhlpwc-ajax-nonce' ).val(),
    3396            post_id: dhlpwc_metabox_object.post_id,
    34             label_size: label_size,
     97            pieces: [],
    3598            label_options: label_options,
    3699            label_option_data: label_option_data,
     
    39102        });
    40103
     104        $('.dhlpwc-chosen-size-container').each(function (key, label_piece) {
     105            data.pieces.push($(label_piece).data());
     106        });
     107
     108        var label_size = $('input[name=dhlpwc-label-create-size]:checked').val();
     109        if (typeof label_size === "undefined" ) {
     110            // TODO update alert to a more user friendly user feedback
     111            alert('Select a label');
     112            return;
     113        }
     114
     115        data.pieces.push({
     116            parcel_type: label_size,
     117            quantity: 1
     118        })
     119
    41120        // Click-2-much prevention
    42121        if ($('#dhlpwc-label').attr('metabox_busy') == 'true') {
     
    47126        }
    48127
    49         $.post(ajaxurl, data, function(response) {
     128        $.post(ajaxurl, data, function (response) {
    50129            try {
    51                 view =  response.data.view;
     130                view = response.data.view;
    52131            } catch(error) {
    53132                alert('Error');
     
    315394            }
    316395
    317             $('div.dhlpwc-order-metabox-form-parceltypes > .dhlpwc-form-content').html(view);
     396            $('div.dhlpwc-order-metabox-form-parceltypes .dhlpwc-form-sizes').html(view);
    318397            // Reselect the previous radio before the refresh, if possible
    319398            if (typeof label_size !== "undefined" ) {
     
    323402            $(document.body).trigger('dhlpwc:select_default_size');
    324403        }, 'json');
     404
     405    }).on('dhlpwc:update_package_counter', function() {
     406        var headers = $('.dhlpwc-label-size-header').not($('.dhlpwc-chosen-size-template .dhlpwc-label-size-header'));
     407        if (headers.length > 1) {
     408            headers.show();
     409        } else {
     410            headers.hide();
     411        }
    325412
    326413    }).on('dhlpwc:select_default_size', function() {
  • dhlpwc/tags/2.0.16/dhlpwoocommerce.php

    r2966997 r2974250  
    55 * Description:          This is the official DHL Parcel for WooCommerce plugin.
    66 * Author:               DHL Parcel
    7  * Version:              2.0.15
     7 * Version:              2.0.16
    88 * Requires at least:    4.7.16
    99 * Tested up to:         6.3
  • dhlpwc/tags/2.0.16/includes/controller/admin/class-dhlpwc-controller-admin-order-metabox.php

    r2966997 r2974250  
    118118    {
    119119        $post_id = wc_clean($_POST['post_id']);
    120         $label_size = wc_clean($_POST['label_size']);
    121120        $label_options = isset($_POST['label_options']) && is_array($_POST['label_options']) ? wc_clean($_POST['label_options']) : array();
    122121        $label_option_data = isset($_POST['label_option_data']) && is_array($_POST['label_option_data']) ? array_map(function ($var) {
     
    124123        }, $_POST['label_option_data']) : array();
    125124        $to_business = (isset($_POST['to_business']) && wc_clean($_POST['to_business']) == 'yes') ? true : false;
     125        $pieces = wc_clean($_POST['pieces']);
     126        foreach ($pieces as &$piece) {
     127            $piece['label_size'] = isset($piece['parcel_type']) ? $piece['parcel_type'] : 'SMALL';
     128            $piece['quantity'] = isset($piece['quantity']) ? (int)$piece['quantity'] : 1;
     129        }
    126130
    127131        $service = DHLPWC_Model_Service_Shipment::instance();
    128         $success = $service->create($post_id, $label_size, $label_options, $label_option_data, $to_business);
     132        $success = $service->create($post_id, $pieces, $label_options, $label_option_data, $to_business);
    129133
    130134        // Set Flash message
     
    390394        $view = new DHLPWC_Template('order.meta.form.sizes-container');
    391395        $sizes_form = $view->render(array(
     396            'header' => $metabox_service->sizes_header($preselected_options),
    392397            'content' => $metabox_service->sizes_form($order_id, $preselected_options, $to_business),
    393398        ), false);
  • dhlpwc/tags/2.0.16/includes/model/logic/class-dhlpwc-model-logic-shipment.php

    r2966997 r2974250  
    2727        $request_options = $service->get_request_options($keys, $option_data);
    2828
    29         // TODO temporary logic to create a piece
    30         $pieces = array();
    31         $piece = new DHLPWC_Model_API_Data_Shipment_Piece();
    32         $piece->parcel_type = isset($options['label_size']) ? $options['label_size'] : 'SMALL';
    33         $piece->quantity = 1;
    34         $pieces[] = $piece;
     29        $pieces = array_map(function ($piece) {
     30            return new DHLPWC_Model_API_Data_Shipment_Piece($piece);
     31        }, $options['pieces']);
    3532
    3633        $shipment = new DHLPWC_Model_API_Data_Shipment_Request(array(
  • dhlpwc/tags/2.0.16/includes/model/service/class-dhlpwc-model-service-escape-output.php

    r2966997 r2974250  
    7474                'rows' => array(),
    7575                'cols' => array(),
     76            ),
     77            'span' => array(
     78                'class' => array(),
    7679            ),
    7780        );
  • dhlpwc/tags/2.0.16/includes/model/service/class-dhlpwc-model-service-label-metabox.php

    r2966997 r2974250  
    270270        }
    271271
    272         public function sizes_form($order_id, $selected_options, $to_business)
     272        public function sizes_header($selected_options)
    273273        {
    274274            $view = new DHLPWC_Template('order.meta.form.sizes-headline');
     
    281281            );
    282282
    283             $size_view = $view->render(array(
     283            return $view->render(array(
    284284                'message' => implode(' + ', $option_texts),
    285285            ), false);
    286 
     286        }
     287
     288        public function sizes_form($order_id, $selected_options, $to_business)
     289        {
     290            $size_view = '';
    287291            $service = DHLPWC_Model_Service_Access_Control::instance();
    288292            $sizes = $service->check(DHLPWC_Model_Service_Access_Control::ACCESS_CAPABILITY_PARCELTYPE, array(
  • dhlpwc/tags/2.0.16/includes/model/service/class-dhlpwc-model-service-shipment.php

    r2966997 r2974250  
    1515
    1616    /**
    17      * TODO update for multiple pieces in the future
    1817     * Create a shipment with label data attached to order_id. Optionally, request specific sizes
    1918     *
     
    2221     * @return boolean
    2322     */
    24     public function create($order_id, $label_size = null, $shipment_options = array(), $shipment_option_data = array(), $to_business = false)
     23    public function create($order_id, $pieces, $shipment_options = array(), $shipment_option_data = array(), $to_business = false)
    2524    {
    2625        $this->clear_error(self::CREATE_ERROR);
     
    4140        /** @var DHLPWC_Model_API_Data_Shipment_Request $shipment_data */
    4241        $shipment_data = $logic->prepare_data($order_id, array(
    43             'label_size' => $label_size,
    44             'label_options' => $shipment_options, // TODO Temp
    45             'label_option_data' => $shipment_option_data, // TODO Temp
     42            'pieces' => $pieces,
     43            'label_options' => $shipment_options,
     44            'label_option_data' => $shipment_option_data,
    4645            'to_business' => $to_business,
    4746        ), $hide_sender_data);
     
    9190
    9291        $response = $logic->send_request($shipment_data);
    93         if (!$response) {
     92        if (!$response || empty($response['pieces'])) {
    9493            return false;
    9594        }
    96         $label = $this->get_first_piece($response);
    97         if (!$label) {
    98             return false;
    99         }
    100 
    101         $label_data = array(
    102             'label_id' => $label['labelId'],
    103             'label_type' => $label['labelType'],
    104             'label_size' => $label_size,
    105             'tracker_code' => $label['trackerCode'],
    106             'routing_code' => null,
    107             'order_reference' => $label['orderReference'],
    108         );
    109 
    110         // Save label request or not
    111         $service = DHLPWC_Model_Service_Access_Control::instance();
    112         $debug_label_requests = $service->check(DHLPWC_Model_Service_Access_Control::ACCESS_LABEL_REQUEST);
    113         if ($debug_label_requests) {
    114             $label_data['request'] = json_encode($shipment_data);
    115         }
    116 
    117         // Create label do action hook
    118         do_action('dhlpwc_create_label', $order_id, $label_data);
    119 
    120         $meta = new DHLPWC_Model_Service_Order_Meta();
    121         $meta->save_label($order_id, $label_data);
     95
     96
     97        $created_label_ids = $this->save_labels($response, $shipment_data, $order_id);
    12298
    12399        /** Create return label if requested */
     
    126102
    127103            $return_response = $logic->send_request($return_shipment_data);
    128             if (!$return_response) {
     104            if (!$return_response || empty($response['pieces'])) {
    129105                // This failed. Remove original successfully created label as well and return.
    130                 $this->delete($order_id, $label['labelId']);
     106                foreach ($created_label_ids as $label_id) {
     107                    $this->delete($order_id, $label_id);
     108                }
     109
    131110                return false;
    132111            }
    133             $return_label = $this->get_first_piece($return_response);
    134             if (!$return_label) {
    135                 // This failed. Remove original successfully created label as well and return.
    136                 $this->delete($order_id, $label['labelId']);
    137                 return false;
    138             }
    139 
     112
     113            $this->save_labels($return_response, $return_shipment_data, $order_id, true);
     114        }
     115
     116        $this->update_order_status($order_id);
     117
     118        return true;
     119    }
     120
     121    protected function save_labels($response, $shipment_data, $order_id, $is_return = false)
     122    {
     123        $labels = $response['pieces'];
     124        // We keep track of the label ids, used to remove these labels if creating a return label fails.
     125        $created_label_ids = [];
     126        foreach ($labels as $label) {
     127            $created_label_ids[] = $label['labelId'];
    140128            $label_data = array(
    141                 'label_id' => $return_label['labelId'],
    142                 'label_type' => $return_label['labelType'],
    143                 'label_size' => $label_size,
    144                 'tracker_code' => $return_label['trackerCode'],
     129                'label_id' => $label['labelId'],
     130                'label_type' => $label['labelType'],
     131                'label_size' => $label['parcelType'],
     132                'tracker_code' => $label['trackerCode'],
    145133                'routing_code' => null,
    146                 'order_reference' => $return_label['orderReference'],
    147                 'is_return' => true,
     134                'order_reference' => $response['orderReference'],
     135                'is_return' => $is_return
    148136            );
    149137
     
    152140            $debug_label_requests = $service->check(DHLPWC_Model_Service_Access_Control::ACCESS_LABEL_REQUEST);
    153141            if ($debug_label_requests) {
    154                 $label_data['request'] = json_encode($return_shipment_data);
     142                $label_data['request'] = json_encode($shipment_data);
    155143            }
    156144
     
    158146            do_action('dhlpwc_create_label', $order_id, $label_data);
    159147
    160             $return_meta = new DHLPWC_Model_Service_Order_Meta();
    161             $return_meta->save_label($order_id, $label_data);
    162         }
    163 
    164         $this->update_order_status($order_id);
    165 
    166         return true;
    167     }
    168 
    169     protected function get_first_piece($response)
    170     {
    171         // TODO currently the code handles single pieces, but can be expanded for multiple pieces in the future
    172         if (empty($response['pieces'])) {
    173             return false;
    174         }
    175 
    176         foreach($response['pieces'] as $label_response) {
    177             if (!empty($label_response['labelId'])) {
    178                 $label = $label_response;
    179             }
    180         }
    181 
    182         if (empty($label)) {
    183             return false;
    184         }
    185 
    186         return $label;
     148            $meta = new DHLPWC_Model_Service_Order_Meta();
     149            $meta->save_label($order_id, $label_data);
     150        }
     151
     152        return $created_label_ids;
    187153    }
    188154
     
    322288                continue;
    323289            } else {
    324                 $label_size = null;
     290                $piece = [];
    325291                switch($selected_size) {
    326292                    case 'bp_only':
     
    344310                                $lowest_weight = $size->max_weight_kg;
    345311                                $smallest_dimensions = $size_dimensions;
    346                                 $label_size = $size->key;
     312                                $piece['parcel_type'] = $size->key;
     313                                $piece['quantity'] = 1;
    347314                            }
    348315                        }
     
    352319                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    353320                            if (strtolower($size->key) === 'envelope') {
    354                                 $label_size = $size->key;
     321                                $piece['parcel_type'] = $size->key;
     322                                $piece['quantity'] = 1;
    355323                                break;
    356324                            }
     
    363331                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    364332                            if (strtolower($size->key) === 'xsmall') {
    365                                 $label_size = $size->key;
     333                                $piece['parcel_type'] = $size->key;
     334                                $piece['quantity'] = 1;
    366335                                break;
    367336                            }
     
    372341                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    373342                            if (strtolower($size->key) === 'small') {
    374                                 $label_size = $size->key;
     343                                $piece['parcel_type'] = $size->key;
     344                                $piece['quantity'] = 1;
    375345                                break;
    376346                            }
     
    381351                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    382352                            if (strtolower($size->key) === 'medium') {
    383                                 $label_size = $size->key;
     353                                $piece['parcel_type'] = $size->key;
     354                                $piece['quantity'] = 1;
    384355                                break;
    385356                            }
     
    390361                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    391362                            if (strtolower($size->key) === 'xlarge') {
    392                                 $label_size = $size->key;
     363                                $piece['parcel_type'] = $size->key;
     364                                $piece['quantity'] = 1;
    393365                                break;
    394366                            }
     
    399371                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    400372                            if (strtolower($size->key) === 'bulky') {
    401                                 $label_size = $size->key;
     373                                $piece['parcel_type'] = $size->key;
     374                                $piece['quantity'] = 1;
    402375                                break;
    403376                            }
     
    418391                                $highest_weight = $size->max_weight_kg;
    419392                                $biggest_dimensions = $size_dimensions;
    420                                 $label_size = $size->key;
    421                             }
    422                         }
    423                         break;
    424                 }
    425             }
    426 
    427             if (!$label_size) {
     393                                $piece['parcel_type'] = $size->key;
     394                                $piece['quantity'] = 1;
     395                            }
     396                        }
     397                        break;
     398                }
     399            }
     400
     401            if (empty($piece)) {
    428402                // Couldn't find an appropriate label size
    429403                $bulk_fail++;
     
    432406
    433407            $service = DHLPWC_Model_Service_Shipment::instance();
    434             $success = $service->create($order_id, $label_size, $preselected_options, $option_data, $to_business);
     408            $success = $service->create($order_id, [$piece], $preselected_options, $option_data, $to_business);
    435409
    436410            if ($success) {
  • dhlpwc/tags/2.0.16/includes/model/service/class-dhlpwc-model-service-shipping-preset.php

    r2836525 r2974250  
    158158                'frontend_id' => 'home-morning',
    159159                'setting_id' => 'morning',
    160                 'title' => __('Door delivery before 11:00AM', 'dhlpwc'),
     160                'title' => __('Door delivery before 12:00PM', 'dhlpwc'),
    161161                'options' => array(
    162162                    DHLPWC_Model_Meta_Order_Option_Preference::OPTION_DOOR,
  • dhlpwc/tags/2.0.16/includes/view/order/meta.php

    r2688414 r2974250  
    1414<?php endif ?>
    1515
     16
    1617<input type="hidden" name="my_ajax_nonce" value="<?php echo wp_create_nonce('my_ajax_action') ?>" />
    17 <button id="dhlpwc-label-create" type="submit"><?php echo esc_html(__('Create', 'dhlpwc')) ?></button>
     18<div class="widefat">
     19    <button class="button button-primary" id="dhlpwc-label-create" type="submit"><?php echo esc_html(__('Create', 'dhlpwc')) ?></button>
     20    <button class="button" id="dhlpwc-label-add-piece" type="button"><?php echo esc_html(__('Add another package', 'dhlpwc')) ?></button>
     21</div>
  • dhlpwc/tags/2.0.16/includes/view/order/meta/form/sizes-container.php

    r2688414 r2974250  
    11<?php if (!defined('ABSPATH')) { exit; } ?>
    2 <div class="dhlpwc-order-metabox-form-parceltypes">
    3     <div class="dhlpwc-form-content">
    4         <?php echo dhlpwc_esc_template($content) ?>
     2<br/>
     3<?php echo dhlpwc_esc_template($header) ?>
     4
     5<div class="dhlpwc-chosen-sizes">
     6    <div class="dhlpwc-chosen-size-template">
     7        <div class="dhlpwc-label-size-header">
     8            <?php echo esc_html(__('Package', 'dhlpwc')) ?> #<span class="dhlpwc-parcel-counter"></span>
     9        </div>
     10        <div class="dhlpwc-chosen-size-selection">
     11            <div class="dhlpwc-chosen-size-actions">
     12                <a href='#' class='button tips dhlpwc-label-action dhlpwc-label-edit-piece'><?php echo __('Edit') ?></a>
     13                <a href='#' class='button tips dhlpwc-label-action dhlpwc-label-delete-piece'><?php echo __('Delete') ?></a>
     14            </div>
     15            <div class="dhlpwc-chosen-size-info">
     16                <span class="dhlpwc-chosen-size">SIZE</span>
     17                ( <i></i> )
     18            </div>
     19        </div>
     20        <div class="dhlpwc-form-size-selections-edit"></div>
    521    </div>
    622</div>
     23
     24<div class="dhlpwc-order-metabox-form-parceltypes">
     25    <div class="dhlpwc-label-size-header">
     26        <?php echo esc_html(__('Package', 'dhlpwc')) ?> #<span class="dhlpwc-parcel-counter"></span>
     27    </div>
     28    <div class="dhlpwc-form-content dhlpwc-form-sizes">
     29        <div class="dhlpwc-form-size-selections">
     30            <?php echo dhlpwc_esc_template($content) ?>
     31        </div>
     32    </div>
     33</div>
  • dhlpwc/tags/2.0.16/includes/view/order/meta/form/sizes-headline.php

    r2688414 r2974250  
    11<?php if (!defined('ABSPATH')) { exit; } ?>
    2 <small><strong><?php _e('Selected:', 'dhlpwc') ?></strong> <?php echo esc_attr($message) ?></small><br/>
     2<?php if (!empty($message)) : ?>
     3    <small><strong><?php _e('Selected:', 'dhlpwc') ?></strong> <?php echo esc_attr($message) ?></small><br/>
     4<?php endif ?>
     5
  • dhlpwc/tags/2.0.16/languages/dhlpwc-de_CH.po

    r2697107 r2974250  
    593593
    594594#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    595 msgid "Door delivery before 11:00AM"
    596 msgstr "Türlieferung vor 11:00 Uhr"
     595msgid "Door delivery before 12:00PM"
     596msgstr "Türlieferung vor 12:00 Uhr"
    597597
    598598#: includes/model/service/class-dhlpwc-model-service-translation.php:22
  • dhlpwc/tags/2.0.16/languages/dhlpwc-nl_BE.po

    r2777069 r2974250  
    587587
    588588#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    589 msgid "Door delivery before 11:00AM"
    590 msgstr "Bezorging voor 11:00 uur"
     589msgid "Door delivery before 12:00PM"
     590msgstr "Bezorging voor 12:00 uur"
    591591
    592592#: includes/model/service/class-dhlpwc-model-service-translation.php:22
  • dhlpwc/tags/2.0.16/languages/dhlpwc-nl_NL.po

    r2777069 r2974250  
    587587
    588588#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    589 msgid "Door delivery before 11:00AM"
    590 msgstr "Bezorging voor 11:00 uur"
     589msgid "Door delivery before 12:00PM"
     590msgstr "Bezorging voor 12:00 uur"
    591591
    592592#: includes/model/service/class-dhlpwc-model-service-translation.php:22
  • dhlpwc/tags/2.0.16/languages/dhlpwc.pot

    r2777069 r2974250  
    572572
    573573#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    574 msgid "Door delivery before 11:00AM"
     574msgid "Door delivery before 12:00PM"
    575575msgstr ""
    576576
  • dhlpwc/tags/2.0.16/readme.txt

    r2966997 r2974250  
    55Requires PHP:         5.6
    66Tested up to:         6.2
    7 Stable tag:           2.0.15
     7Stable tag:           2.0.16
    88WC requires at least: 3.0.0
    99WC tested up to:      7.3.0
     
    5353
    5454== Changelog ==
     55 
     56= 2.0.16 =
     57- Added the possibility to add multiple shipments through the label panel
     58- Update Expresser service time to reflect the correct new time
    5559 
    5660= 2.0.15 =
  • dhlpwc/trunk/README.md

    r2966997 r2974250  
    11# DHL Parcel for WooCommerce
     2 
     3v2.0.16
     4## Changes
     5- Added the possibility to add multiple shipments through the label panel
     6- Update Expresser service time to reflect the correct new time
    27 
    38v2.0.15
  • dhlpwc/trunk/assets/css/dhlpwc.admin.css

    r2688414 r2974250  
    715715    display:block;
    716716}
     717
     718/* Sizes */
     719.dhlpwc-chosen-sizes {
     720    counter-reset: dhlpwc-parcel-counter 0;
     721}
     722.dhlpwc-parcel-counter:before {
     723    counter-increment: dhlpwc-parcel-counter 1;
     724    content: counter(dhlpwc-parcel-counter);
     725}
     726
     727.dhlpwc-chosen-size-template {
     728    display: none;
     729}
     730
     731.dhlpwc-order-metabox-form-parceltypes .dhlpwc-label-size-header {
     732    display: none;
     733}
     734
     735.dhlpwc-label-size-header {
     736    margin-top: 10px;
     737    font-weight: bold;
     738    font-size: small;
     739}
     740
     741.dhlpwc-chosen-size-container:nth-child(2) .dhlpwc-label-size-header {
     742    margin-top: 0;
     743}
     744
     745.dhlpwc-chosen-size-actions {
     746    float: left;
     747    margin: 5px 5px 0 0;
     748}
     749
     750.dhlpwc-form-sizes,
     751.dhlpwc-chosen-size-info,
     752.dhlpwc-form-size-selections-edit {
     753    overflow-x:hidden;
     754    white-space: nowrap;
     755    text-overflow: ellipsis;
     756}
     757
     758.dhlpwc-chosen-size-info .dhlpwc-chosen-size {
     759    display: block;
     760    font-weight: 600;
     761}
     762
     763.dhlpwc-chosen-sizes .dhlpwc-label-action {
     764    display: inline-block;
     765    text-indent: -9999px;
     766    position: relative;
     767    padding: 0 !important;
     768    height: 2em;
     769    width: 2em;
     770}
     771
     772.dhlpwc-chosen-sizes .dhlpwc-label-action::after {
     773    font-family: Dashicons;
     774    speak: none;
     775    font-weight: 400;
     776    font-variant: normal;
     777    text-transform: none;
     778    -webkit-font-smoothing: antialiased;
     779    margin: 0;
     780    text-indent: 0;
     781    position: absolute;
     782    top: 0;
     783    right: 0;
     784    width: 100%;
     785    height: 100%;
     786    text-align: center;
     787    content: "\f133";
     788    line-height: 1.85;
     789}
     790
     791.dhlpwc-chosen-sizes .dhlpwc-label-action.dhlpwc-label-edit-piece::after { content: "\f203";}
     792.dhlpwc-chosen-sizes .dhlpwc-label-action.dhlpwc-label-delete-piece::after { content: "\f182";}
  • dhlpwc/trunk/assets/js/dhlpwc.metabox.js

    r2966997 r2974250  
    55
    66jQuery(document).ready(function($) {
    7     $(document.body).on('click', '#dhlpwc-label-create', function(e) {
    8         e.preventDefault();
    9 
    10         var label_size = $('.dhlpwc-label-create-size:checked').val();
     7    $(document.body).on('click', '#dhlpwc-label-add-piece', function(e) {
     8        var label_size = $('input[name=dhlpwc-label-create-size]:checked').val();
     9        var label_size_info = $('input[name=dhlpwc-label-create-size]:checked').nextAll('i').first().html();
     10
    1111        if (typeof label_size === "undefined" ) {
    1212            // TODO update alert to a more user friendly user feedback
     
    1414            return;
    1515        }
     16
     17        var new_label_piece = $('.dhlpwc-chosen-size-template').first().clone();
     18        new_label_piece.removeClass('dhlpwc-chosen-size-template');
     19        new_label_piece.addClass('dhlpwc-chosen-size-container');
     20        new_label_piece.find('.dhlpwc-chosen-size').html(label_size);
     21        new_label_piece.find('.dhlpwc-chosen-size + i').html(label_size_info);
     22
     23        new_label_piece.data({
     24            parcel_type: label_size,
     25            quantity: 1
     26        });
     27        new_label_piece.appendTo('.dhlpwc-chosen-sizes');
     28
     29        $(document.body).trigger('dhlpwc:update_package_counter');
     30
     31    }).on('click', '.dhlpwc-label-edit-piece', function(e) {
     32        e.preventDefault();
     33
     34        var container = $(this).closest('.dhlpwc-chosen-size-container');
     35        var chosen_size = container.data('parcel_type');
     36        var form_sizes = $('.dhlpwc-form-content.dhlpwc-form-sizes').clone();
     37
     38        // Randomize name
     39        form_sizes.find('input[type=radio]')
     40            .attr('name', 'dhlpwc-label-edit-size-' + Math.floor(Math.random() * 26) + Date.now())
     41            .removeClass('dhlpwc-label-create-size')
     42            .addClass('dhlpwc-label-edit-size')
     43            .each(function() {
     44                $(this).attr('checked', $(this).val() === chosen_size)
     45            });
     46
     47        container.find('.dhlpwc-chosen-size-selection').hide();
     48        container.find('.dhlpwc-form-size-selections-edit').show();
     49        container.find('.dhlpwc-form-size-selections-edit').html(form_sizes.html());
     50
     51    }).on('click', '.dhlpwc-form-size-selections-edit .dhlpwc-label-edit-size', function(e) {
     52        e.preventDefault();
     53
     54        var container = $(this).closest('.dhlpwc-chosen-size-container');
     55
     56        var label_size = $(this).val();
     57        var label_size_info = container.find('input.dhlpwc-label-edit-size[value="' + label_size + '"]').nextAll('i').first().html();
     58
     59        container.find('.dhlpwc-chosen-size').html(label_size);
     60        container.find('.dhlpwc-chosen-size + i').html(label_size_info);
     61        container.data({
     62            parcel_type: label_size,
     63            quantity: 1
     64        });
     65
     66        container.find('.dhlpwc-chosen-size-selection').show();
     67        container.find('.dhlpwc-form-size-selections-edit').hide();
     68
     69    }).on('click', '.dhlpwc-label-delete-piece', function(e) {
     70        e.preventDefault();
     71
     72        var container = $(this).closest('.dhlpwc-chosen-size-container');
     73        container.remove();
     74
     75        $(document.body).trigger('dhlpwc:update_package_counter');
     76
     77    }).on('click', '#dhlpwc-label-create', function(e) {
     78        e.preventDefault();
    1679
    1780        var label_options = [];
     
    3295            security: $( '#dhlpwc-ajax-nonce' ).val(),
    3396            post_id: dhlpwc_metabox_object.post_id,
    34             label_size: label_size,
     97            pieces: [],
    3598            label_options: label_options,
    3699            label_option_data: label_option_data,
     
    39102        });
    40103
     104        $('.dhlpwc-chosen-size-container').each(function (key, label_piece) {
     105            data.pieces.push($(label_piece).data());
     106        });
     107
     108        var label_size = $('input[name=dhlpwc-label-create-size]:checked').val();
     109        if (typeof label_size === "undefined" ) {
     110            // TODO update alert to a more user friendly user feedback
     111            alert('Select a label');
     112            return;
     113        }
     114
     115        data.pieces.push({
     116            parcel_type: label_size,
     117            quantity: 1
     118        })
     119
    41120        // Click-2-much prevention
    42121        if ($('#dhlpwc-label').attr('metabox_busy') == 'true') {
     
    47126        }
    48127
    49         $.post(ajaxurl, data, function(response) {
     128        $.post(ajaxurl, data, function (response) {
    50129            try {
    51                 view =  response.data.view;
     130                view = response.data.view;
    52131            } catch(error) {
    53132                alert('Error');
     
    315394            }
    316395
    317             $('div.dhlpwc-order-metabox-form-parceltypes > .dhlpwc-form-content').html(view);
     396            $('div.dhlpwc-order-metabox-form-parceltypes .dhlpwc-form-sizes').html(view);
    318397            // Reselect the previous radio before the refresh, if possible
    319398            if (typeof label_size !== "undefined" ) {
     
    323402            $(document.body).trigger('dhlpwc:select_default_size');
    324403        }, 'json');
     404
     405    }).on('dhlpwc:update_package_counter', function() {
     406        var headers = $('.dhlpwc-label-size-header').not($('.dhlpwc-chosen-size-template .dhlpwc-label-size-header'));
     407        if (headers.length > 1) {
     408            headers.show();
     409        } else {
     410            headers.hide();
     411        }
    325412
    326413    }).on('dhlpwc:select_default_size', function() {
  • dhlpwc/trunk/dhlpwoocommerce.php

    r2966997 r2974250  
    55 * Description:          This is the official DHL Parcel for WooCommerce plugin.
    66 * Author:               DHL Parcel
    7  * Version:              2.0.15
     7 * Version:              2.0.16
    88 * Requires at least:    4.7.16
    99 * Tested up to:         6.3
  • dhlpwc/trunk/includes/controller/admin/class-dhlpwc-controller-admin-order-metabox.php

    r2966997 r2974250  
    118118    {
    119119        $post_id = wc_clean($_POST['post_id']);
    120         $label_size = wc_clean($_POST['label_size']);
    121120        $label_options = isset($_POST['label_options']) && is_array($_POST['label_options']) ? wc_clean($_POST['label_options']) : array();
    122121        $label_option_data = isset($_POST['label_option_data']) && is_array($_POST['label_option_data']) ? array_map(function ($var) {
     
    124123        }, $_POST['label_option_data']) : array();
    125124        $to_business = (isset($_POST['to_business']) && wc_clean($_POST['to_business']) == 'yes') ? true : false;
     125        $pieces = wc_clean($_POST['pieces']);
     126        foreach ($pieces as &$piece) {
     127            $piece['label_size'] = isset($piece['parcel_type']) ? $piece['parcel_type'] : 'SMALL';
     128            $piece['quantity'] = isset($piece['quantity']) ? (int)$piece['quantity'] : 1;
     129        }
    126130
    127131        $service = DHLPWC_Model_Service_Shipment::instance();
    128         $success = $service->create($post_id, $label_size, $label_options, $label_option_data, $to_business);
     132        $success = $service->create($post_id, $pieces, $label_options, $label_option_data, $to_business);
    129133
    130134        // Set Flash message
     
    390394        $view = new DHLPWC_Template('order.meta.form.sizes-container');
    391395        $sizes_form = $view->render(array(
     396            'header' => $metabox_service->sizes_header($preselected_options),
    392397            'content' => $metabox_service->sizes_form($order_id, $preselected_options, $to_business),
    393398        ), false);
  • dhlpwc/trunk/includes/model/logic/class-dhlpwc-model-logic-shipment.php

    r2966997 r2974250  
    2727        $request_options = $service->get_request_options($keys, $option_data);
    2828
    29         // TODO temporary logic to create a piece
    30         $pieces = array();
    31         $piece = new DHLPWC_Model_API_Data_Shipment_Piece();
    32         $piece->parcel_type = isset($options['label_size']) ? $options['label_size'] : 'SMALL';
    33         $piece->quantity = 1;
    34         $pieces[] = $piece;
     29        $pieces = array_map(function ($piece) {
     30            return new DHLPWC_Model_API_Data_Shipment_Piece($piece);
     31        }, $options['pieces']);
    3532
    3633        $shipment = new DHLPWC_Model_API_Data_Shipment_Request(array(
  • dhlpwc/trunk/includes/model/service/class-dhlpwc-model-service-escape-output.php

    r2966997 r2974250  
    7474                'rows' => array(),
    7575                'cols' => array(),
     76            ),
     77            'span' => array(
     78                'class' => array(),
    7679            ),
    7780        );
  • dhlpwc/trunk/includes/model/service/class-dhlpwc-model-service-label-metabox.php

    r2966997 r2974250  
    270270        }
    271271
    272         public function sizes_form($order_id, $selected_options, $to_business)
     272        public function sizes_header($selected_options)
    273273        {
    274274            $view = new DHLPWC_Template('order.meta.form.sizes-headline');
     
    281281            );
    282282
    283             $size_view = $view->render(array(
     283            return $view->render(array(
    284284                'message' => implode(' + ', $option_texts),
    285285            ), false);
    286 
     286        }
     287
     288        public function sizes_form($order_id, $selected_options, $to_business)
     289        {
     290            $size_view = '';
    287291            $service = DHLPWC_Model_Service_Access_Control::instance();
    288292            $sizes = $service->check(DHLPWC_Model_Service_Access_Control::ACCESS_CAPABILITY_PARCELTYPE, array(
  • dhlpwc/trunk/includes/model/service/class-dhlpwc-model-service-shipment.php

    r2966997 r2974250  
    1515
    1616    /**
    17      * TODO update for multiple pieces in the future
    1817     * Create a shipment with label data attached to order_id. Optionally, request specific sizes
    1918     *
     
    2221     * @return boolean
    2322     */
    24     public function create($order_id, $label_size = null, $shipment_options = array(), $shipment_option_data = array(), $to_business = false)
     23    public function create($order_id, $pieces, $shipment_options = array(), $shipment_option_data = array(), $to_business = false)
    2524    {
    2625        $this->clear_error(self::CREATE_ERROR);
     
    4140        /** @var DHLPWC_Model_API_Data_Shipment_Request $shipment_data */
    4241        $shipment_data = $logic->prepare_data($order_id, array(
    43             'label_size' => $label_size,
    44             'label_options' => $shipment_options, // TODO Temp
    45             'label_option_data' => $shipment_option_data, // TODO Temp
     42            'pieces' => $pieces,
     43            'label_options' => $shipment_options,
     44            'label_option_data' => $shipment_option_data,
    4645            'to_business' => $to_business,
    4746        ), $hide_sender_data);
     
    9190
    9291        $response = $logic->send_request($shipment_data);
    93         if (!$response) {
     92        if (!$response || empty($response['pieces'])) {
    9493            return false;
    9594        }
    96         $label = $this->get_first_piece($response);
    97         if (!$label) {
    98             return false;
    99         }
    100 
    101         $label_data = array(
    102             'label_id' => $label['labelId'],
    103             'label_type' => $label['labelType'],
    104             'label_size' => $label_size,
    105             'tracker_code' => $label['trackerCode'],
    106             'routing_code' => null,
    107             'order_reference' => $label['orderReference'],
    108         );
    109 
    110         // Save label request or not
    111         $service = DHLPWC_Model_Service_Access_Control::instance();
    112         $debug_label_requests = $service->check(DHLPWC_Model_Service_Access_Control::ACCESS_LABEL_REQUEST);
    113         if ($debug_label_requests) {
    114             $label_data['request'] = json_encode($shipment_data);
    115         }
    116 
    117         // Create label do action hook
    118         do_action('dhlpwc_create_label', $order_id, $label_data);
    119 
    120         $meta = new DHLPWC_Model_Service_Order_Meta();
    121         $meta->save_label($order_id, $label_data);
     95
     96
     97        $created_label_ids = $this->save_labels($response, $shipment_data, $order_id);
    12298
    12399        /** Create return label if requested */
     
    126102
    127103            $return_response = $logic->send_request($return_shipment_data);
    128             if (!$return_response) {
     104            if (!$return_response || empty($response['pieces'])) {
    129105                // This failed. Remove original successfully created label as well and return.
    130                 $this->delete($order_id, $label['labelId']);
     106                foreach ($created_label_ids as $label_id) {
     107                    $this->delete($order_id, $label_id);
     108                }
     109
    131110                return false;
    132111            }
    133             $return_label = $this->get_first_piece($return_response);
    134             if (!$return_label) {
    135                 // This failed. Remove original successfully created label as well and return.
    136                 $this->delete($order_id, $label['labelId']);
    137                 return false;
    138             }
    139 
     112
     113            $this->save_labels($return_response, $return_shipment_data, $order_id, true);
     114        }
     115
     116        $this->update_order_status($order_id);
     117
     118        return true;
     119    }
     120
     121    protected function save_labels($response, $shipment_data, $order_id, $is_return = false)
     122    {
     123        $labels = $response['pieces'];
     124        // We keep track of the label ids, used to remove these labels if creating a return label fails.
     125        $created_label_ids = [];
     126        foreach ($labels as $label) {
     127            $created_label_ids[] = $label['labelId'];
    140128            $label_data = array(
    141                 'label_id' => $return_label['labelId'],
    142                 'label_type' => $return_label['labelType'],
    143                 'label_size' => $label_size,
    144                 'tracker_code' => $return_label['trackerCode'],
     129                'label_id' => $label['labelId'],
     130                'label_type' => $label['labelType'],
     131                'label_size' => $label['parcelType'],
     132                'tracker_code' => $label['trackerCode'],
    145133                'routing_code' => null,
    146                 'order_reference' => $return_label['orderReference'],
    147                 'is_return' => true,
     134                'order_reference' => $response['orderReference'],
     135                'is_return' => $is_return
    148136            );
    149137
     
    152140            $debug_label_requests = $service->check(DHLPWC_Model_Service_Access_Control::ACCESS_LABEL_REQUEST);
    153141            if ($debug_label_requests) {
    154                 $label_data['request'] = json_encode($return_shipment_data);
     142                $label_data['request'] = json_encode($shipment_data);
    155143            }
    156144
     
    158146            do_action('dhlpwc_create_label', $order_id, $label_data);
    159147
    160             $return_meta = new DHLPWC_Model_Service_Order_Meta();
    161             $return_meta->save_label($order_id, $label_data);
    162         }
    163 
    164         $this->update_order_status($order_id);
    165 
    166         return true;
    167     }
    168 
    169     protected function get_first_piece($response)
    170     {
    171         // TODO currently the code handles single pieces, but can be expanded for multiple pieces in the future
    172         if (empty($response['pieces'])) {
    173             return false;
    174         }
    175 
    176         foreach($response['pieces'] as $label_response) {
    177             if (!empty($label_response['labelId'])) {
    178                 $label = $label_response;
    179             }
    180         }
    181 
    182         if (empty($label)) {
    183             return false;
    184         }
    185 
    186         return $label;
     148            $meta = new DHLPWC_Model_Service_Order_Meta();
     149            $meta->save_label($order_id, $label_data);
     150        }
     151
     152        return $created_label_ids;
    187153    }
    188154
     
    322288                continue;
    323289            } else {
    324                 $label_size = null;
     290                $piece = [];
    325291                switch($selected_size) {
    326292                    case 'bp_only':
     
    344310                                $lowest_weight = $size->max_weight_kg;
    345311                                $smallest_dimensions = $size_dimensions;
    346                                 $label_size = $size->key;
     312                                $piece['parcel_type'] = $size->key;
     313                                $piece['quantity'] = 1;
    347314                            }
    348315                        }
     
    352319                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    353320                            if (strtolower($size->key) === 'envelope') {
    354                                 $label_size = $size->key;
     321                                $piece['parcel_type'] = $size->key;
     322                                $piece['quantity'] = 1;
    355323                                break;
    356324                            }
     
    363331                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    364332                            if (strtolower($size->key) === 'xsmall') {
    365                                 $label_size = $size->key;
     333                                $piece['parcel_type'] = $size->key;
     334                                $piece['quantity'] = 1;
    366335                                break;
    367336                            }
     
    372341                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    373342                            if (strtolower($size->key) === 'small') {
    374                                 $label_size = $size->key;
     343                                $piece['parcel_type'] = $size->key;
     344                                $piece['quantity'] = 1;
    375345                                break;
    376346                            }
     
    381351                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    382352                            if (strtolower($size->key) === 'medium') {
    383                                 $label_size = $size->key;
     353                                $piece['parcel_type'] = $size->key;
     354                                $piece['quantity'] = 1;
    384355                                break;
    385356                            }
     
    390361                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    391362                            if (strtolower($size->key) === 'xlarge') {
    392                                 $label_size = $size->key;
     363                                $piece['parcel_type'] = $size->key;
     364                                $piece['quantity'] = 1;
    393365                                break;
    394366                            }
     
    399371                            /** @var DHLPWC_Model_API_Data_Parceltype $size */
    400372                            if (strtolower($size->key) === 'bulky') {
    401                                 $label_size = $size->key;
     373                                $piece['parcel_type'] = $size->key;
     374                                $piece['quantity'] = 1;
    402375                                break;
    403376                            }
     
    418391                                $highest_weight = $size->max_weight_kg;
    419392                                $biggest_dimensions = $size_dimensions;
    420                                 $label_size = $size->key;
    421                             }
    422                         }
    423                         break;
    424                 }
    425             }
    426 
    427             if (!$label_size) {
     393                                $piece['parcel_type'] = $size->key;
     394                                $piece['quantity'] = 1;
     395                            }
     396                        }
     397                        break;
     398                }
     399            }
     400
     401            if (empty($piece)) {
    428402                // Couldn't find an appropriate label size
    429403                $bulk_fail++;
     
    432406
    433407            $service = DHLPWC_Model_Service_Shipment::instance();
    434             $success = $service->create($order_id, $label_size, $preselected_options, $option_data, $to_business);
     408            $success = $service->create($order_id, [$piece], $preselected_options, $option_data, $to_business);
    435409
    436410            if ($success) {
  • dhlpwc/trunk/includes/model/service/class-dhlpwc-model-service-shipping-preset.php

    r2836525 r2974250  
    158158                'frontend_id' => 'home-morning',
    159159                'setting_id' => 'morning',
    160                 'title' => __('Door delivery before 11:00AM', 'dhlpwc'),
     160                'title' => __('Door delivery before 12:00PM', 'dhlpwc'),
    161161                'options' => array(
    162162                    DHLPWC_Model_Meta_Order_Option_Preference::OPTION_DOOR,
  • dhlpwc/trunk/includes/view/order/meta.php

    r2688414 r2974250  
    1414<?php endif ?>
    1515
     16
    1617<input type="hidden" name="my_ajax_nonce" value="<?php echo wp_create_nonce('my_ajax_action') ?>" />
    17 <button id="dhlpwc-label-create" type="submit"><?php echo esc_html(__('Create', 'dhlpwc')) ?></button>
     18<div class="widefat">
     19    <button class="button button-primary" id="dhlpwc-label-create" type="submit"><?php echo esc_html(__('Create', 'dhlpwc')) ?></button>
     20    <button class="button" id="dhlpwc-label-add-piece" type="button"><?php echo esc_html(__('Add another package', 'dhlpwc')) ?></button>
     21</div>
  • dhlpwc/trunk/includes/view/order/meta/form/sizes-container.php

    r2688414 r2974250  
    11<?php if (!defined('ABSPATH')) { exit; } ?>
    2 <div class="dhlpwc-order-metabox-form-parceltypes">
    3     <div class="dhlpwc-form-content">
    4         <?php echo dhlpwc_esc_template($content) ?>
     2<br/>
     3<?php echo dhlpwc_esc_template($header) ?>
     4
     5<div class="dhlpwc-chosen-sizes">
     6    <div class="dhlpwc-chosen-size-template">
     7        <div class="dhlpwc-label-size-header">
     8            <?php echo esc_html(__('Package', 'dhlpwc')) ?> #<span class="dhlpwc-parcel-counter"></span>
     9        </div>
     10        <div class="dhlpwc-chosen-size-selection">
     11            <div class="dhlpwc-chosen-size-actions">
     12                <a href='#' class='button tips dhlpwc-label-action dhlpwc-label-edit-piece'><?php echo __('Edit') ?></a>
     13                <a href='#' class='button tips dhlpwc-label-action dhlpwc-label-delete-piece'><?php echo __('Delete') ?></a>
     14            </div>
     15            <div class="dhlpwc-chosen-size-info">
     16                <span class="dhlpwc-chosen-size">SIZE</span>
     17                ( <i></i> )
     18            </div>
     19        </div>
     20        <div class="dhlpwc-form-size-selections-edit"></div>
    521    </div>
    622</div>
     23
     24<div class="dhlpwc-order-metabox-form-parceltypes">
     25    <div class="dhlpwc-label-size-header">
     26        <?php echo esc_html(__('Package', 'dhlpwc')) ?> #<span class="dhlpwc-parcel-counter"></span>
     27    </div>
     28    <div class="dhlpwc-form-content dhlpwc-form-sizes">
     29        <div class="dhlpwc-form-size-selections">
     30            <?php echo dhlpwc_esc_template($content) ?>
     31        </div>
     32    </div>
     33</div>
  • dhlpwc/trunk/includes/view/order/meta/form/sizes-headline.php

    r2688414 r2974250  
    11<?php if (!defined('ABSPATH')) { exit; } ?>
    2 <small><strong><?php _e('Selected:', 'dhlpwc') ?></strong> <?php echo esc_attr($message) ?></small><br/>
     2<?php if (!empty($message)) : ?>
     3    <small><strong><?php _e('Selected:', 'dhlpwc') ?></strong> <?php echo esc_attr($message) ?></small><br/>
     4<?php endif ?>
     5
  • dhlpwc/trunk/languages/dhlpwc-de_CH.po

    r2697107 r2974250  
    593593
    594594#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    595 msgid "Door delivery before 11:00AM"
    596 msgstr "Türlieferung vor 11:00 Uhr"
     595msgid "Door delivery before 12:00PM"
     596msgstr "Türlieferung vor 12:00 Uhr"
    597597
    598598#: includes/model/service/class-dhlpwc-model-service-translation.php:22
  • dhlpwc/trunk/languages/dhlpwc-nl_BE.po

    r2777069 r2974250  
    587587
    588588#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    589 msgid "Door delivery before 11:00AM"
    590 msgstr "Bezorging voor 11:00 uur"
     589msgid "Door delivery before 12:00PM"
     590msgstr "Bezorging voor 12:00 uur"
    591591
    592592#: includes/model/service/class-dhlpwc-model-service-translation.php:22
  • dhlpwc/trunk/languages/dhlpwc-nl_NL.po

    r2777069 r2974250  
    587587
    588588#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    589 msgid "Door delivery before 11:00AM"
    590 msgstr "Bezorging voor 11:00 uur"
     589msgid "Door delivery before 12:00PM"
     590msgstr "Bezorging voor 12:00 uur"
    591591
    592592#: includes/model/service/class-dhlpwc-model-service-translation.php:22
  • dhlpwc/trunk/languages/dhlpwc.pot

    r2777069 r2974250  
    572572
    573573#: includes/model/service/class-dhlpwc-model-service-shipping-preset.php:131
    574 msgid "Door delivery before 11:00AM"
     574msgid "Door delivery before 12:00PM"
    575575msgstr ""
    576576
  • dhlpwc/trunk/readme.txt

    r2966997 r2974250  
    55Requires PHP:         5.6
    66Tested up to:         6.2
    7 Stable tag:           2.0.15
     7Stable tag:           2.0.16
    88WC requires at least: 3.0.0
    99WC tested up to:      7.3.0
     
    5353
    5454== Changelog ==
     55 
     56= 2.0.16 =
     57- Added the possibility to add multiple shipments through the label panel
     58- Update Expresser service time to reflect the correct new time
    5559 
    5660= 2.0.15 =
Note: See TracChangeset for help on using the changeset viewer.