Plugin Directory

Changeset 3127145


Ignore:
Timestamp:
07/29/2024 08:44:32 AM (20 months ago)
Author:
levantoan
Message:
  • Fix lỗi với W00 9.1.x
  • Fix lỗi load địa chỉ trong admin
Location:
woo-vietnam-checkout
Files:
50 added
5 edited

Legend:

Unmodified
Added
Removed
  • woo-vietnam-checkout/trunk/assets/js/admin-district-admin-order.js

    r2523064 r3127145  
    1 (function($){
    2     $(document).ready(function(){
    3         var $defaultSetting = {
    4             formatNoMatches: woocommerce_district_admin.formatNoMatches,
    5         };
    6         var loading_billing = loading_shipping = false;
    7         //billing
    8         $('#_billing_state').select2($defaultSetting);
    9         $('#_billing_city').select2($defaultSetting);
    10         $('#_billing_address_2').select2($defaultSetting);
    11 
    12         $('body').on('select2:select select2-selecting', '#_billing_state',function(e){
    13             $( "#_billing_city option" ).val('');
    14             var matp = e.val;
    15             if(!matp) matp = $( "#_billing_state option:selected" ).val();
    16             if(matp && !loading_billing){
    17                 loading_billing = true;
    18                 $.ajax({
    19                     type : "post",
    20                     dataType : "json",
    21                     url : woocommerce_district_admin.ajaxurl,
    22                     data : {action: "load_diagioihanhchinh", matp : matp},
    23                     context: this,
    24                     beforeSend: function(){
    25                         $("#_billing_city,#_billing_address_2").html('').select2();
    26                         var newState = new Option('Loading...', '');
    27                         $("#_billing_city, #_billing_address_2").append(newState);
    28                     },
    29                     success: function(response) {
    30                         loading_billing = false;
    31                         $("#_billing_city,#_billing_address_2").html('').select2();
    32                         var newState = new Option('Chọn xã/phường/thị trấn', '');
    33                         $("#_billing_address_2").append(newState);
    34                         if(response.success) {
    35                             var listQH = response.data;
    36                             newState = new Option('Chọn quận/huyện', '');
    37                             $("#_billing_city").append(newState);
    38                             $.each(listQH,function(index,value){
    39                                 newState = new Option(value.name, value.maqh);
    40                                 $("#_billing_city").append(newState);
    41                             });
    42                         }
    43                     }
    44                 });
    45             }
    46         });
    47         if($('#_billing_address_2').length > 0){
    48             $('#_billing_city').on('change select2:select select2-selecting',function(e){
    49                 var maqh = e.val;
    50                 if(!maqh) maqh = $( "#_billing_city option:selected" ).val();
    51                 if(maqh) {
    52                     $.ajax({
    53                         type: "post",
    54                         dataType: "json",
    55                         url: woocommerce_district_admin.ajaxurl,
    56                         data: {action: "load_diagioihanhchinh", maqh: maqh},
    57                         context: this,
    58                         beforeSend: function(){
    59                             $("#_billing_address_2").html('').select2();
    60                             var newState = new Option('Loading...', '');
    61                             $("#_billing_address_2").append(newState);
    62                         },
    63                         success: function (response) {
    64                             $("#_billing_address_2").html('').select2($defaultSetting);
    65                             if (response.success) {
    66                                 var listQH = response.data;
    67                                 var newState = new Option('Chọn xã/phường/thị trấn', '');
    68                                 $("#_billing_address_2").append(newState);
    69                                 $.each(listQH, function (index, value) {
    70                                     var newState = new Option(value.name, value.xaid);
    71                                     $("#_billing_address_2").append(newState);
    72                                 });
    73                             }
    74                         }
    75                     });
    76                 }
    77             });
    78         }
    79         //shipping
    80         $('#_shipping_state').select2($defaultSetting);
    81         $('#_shipping_city').select2($defaultSetting);
    82         $('#_shipping_address_2').select2($defaultSetting);
    83 
    84         $('body #_shipping_state').on('select2:select select2-selecting',function(e){
    85             $( "#_shipping_city option" ).val('');
    86             var matp = e.val;
    87             if(!matp) matp = $( "#_shipping_state option:selected" ).val();
    88             if(matp && !loading_shipping){
    89                 loading_shipping = true;
    90                 $.ajax({
    91                     type : "post",
    92                     dataType : "json",
    93                     url : woocommerce_district_admin.ajaxurl,
    94                     data : {action: "load_diagioihanhchinh", matp : matp},
    95                     context: this,
    96                     beforeSend: function(){
    97                         $("#_shipping_city,#_shipping_address_2").html('').select2();
    98                         var newState = new Option('Loading...', '');
    99                         $("#_shipping_city, #_shipping_address_2").append(newState);
    100                     },
    101                     success: function(response) {
    102                         loading_shipping = false;
    103                         $("#_shipping_city,#_shipping_address_2").html('').select2();
    104                         var newState = new Option('Chọn xã/phường/thị trấn', '');
    105                         $("#_shipping_address_2").append(newState);
    106                         if(response.success) {
    107                             var listQH = response.data;
    108                             var newState = new Option('Chọn quận/huyện', '');
    109                             $("#_shipping_city").append(newState);
    110                             $.each(listQH,function(index,value){
    111                                 var newState = new Option(value.name, value.maqh);
    112                                 $("#_shipping_city").append(newState);
    113                             });
    114                         }
    115                     }
    116                 });
    117             }
    118         });
    119         if($('#_shipping_address_2').length > 0){
    120             $('#_shipping_city').on('change select2:select select2-selecting',function(e){
    121                 var maqh = e.val;
    122                 if(!maqh) maqh = $( "#_shipping_city option:selected" ).val();
    123                 if(maqh) {
    124                     $.ajax({
    125                         type: "post",
    126                         dataType: "json",
    127                         url: woocommerce_district_admin.ajaxurl,
    128                         data: {action: "load_diagioihanhchinh", maqh: maqh},
    129                         context: this,
    130                         beforeSend: function(){
    131                             $("#_shipping_address_2").html('').select2();
    132                             var newState = new Option('Loading...', '');
    133                             $("#_shipping_address_2").append(newState);
    134                         },
    135                         success: function (response) {
    136                             $("#_shipping_address_2").html('').select2($defaultSetting);
    137                             if (response.success) {
    138                                 var listQH = response.data;
    139                                 var newState = new Option('Chọn xã/phường/thị trấn', '');
    140                                 $("#_shipping_address_2").append(newState);
    141                                 $.each(listQH, function (index, value) {
    142                                     var newState = new Option(value.name, value.xaid);
    143                                     $("#_shipping_address_2").append(newState);
    144                                 });
    145                             }
    146                         }
    147                     });
    148                 }
    149             });
    150         }
    151     });
    152 })(jQuery);
     1!function(t){t(document).ready(function(){var e={formatNoMatches:woocommerce_district_admin.formatNoMatches},n=loading_shipping=!1;t("#_billing_state").select2(e),t("#_billing_city").select2(e),t("#_billing_address_2").select2(e),t("body").on("select2:select select2-selecting","#_billing_state",function(i){t("#_billing_city option").val("");i=i.val;(i=i||t("#_billing_state option:selected").val())&&!n&&(n=!0,t.ajax({type:"post",dataType:"json",url:woocommerce_district_admin.ajaxurl,data:{action:"load_diagioihanhchinh",matp:i},context:this,beforeSend:function(){t("#_billing_city,#_billing_address_2").html("").select2();var i=new Option("Loading...","");t("#_billing_city, #_billing_address_2").append(i)},success:function(i){n=!1,t("#_billing_city,#_billing_address_2").html("").select2();var e=new Option("Chọn xã/phường/thị trấn","");t("#_billing_address_2").append(e),i.success&&(i=i.data,e=new Option("Chọn quận/huyện",""),t("#_billing_city").append(e),t.each(i,function(i,n){e=new Option(n.name,n.maqh),t("#_billing_city").append(e)}))}}))}),0<t("#_billing_address_2").length&&t("body").on("change select2:select select2-selecting","#_billing_city",function(i){i=i.val;(i=i||t("#_billing_city option:selected").val())&&t.ajax({type:"post",dataType:"json",url:woocommerce_district_admin.ajaxurl,data:{action:"load_diagioihanhchinh",maqh:i},context:this,beforeSend:function(){t("#_billing_address_2").html("").select2();var i=new Option("Loading...","");t("#_billing_address_2").append(i)},success:function(i){var n;t("#_billing_address_2").html("").select2(e),i.success&&(n=i.data,i=new Option("Chọn xã/phường/thị trấn",""),t("#_billing_address_2").append(i),t.each(n,function(i,n){n=new Option(n.name,n.xaid);t("#_billing_address_2").append(n)}))}})}),t("#_shipping_state").select2(e),t("#_shipping_city").select2(e),t("#_shipping_address_2").select2(e),t("body").on("select2:select select2-selecting","#_shipping_state",function(i){t("#_shipping_city option").val("");i=i.val;(i=i||t("#_shipping_state option:selected").val())&&!loading_shipping&&(loading_shipping=!0,t.ajax({type:"post",dataType:"json",url:woocommerce_district_admin.ajaxurl,data:{action:"load_diagioihanhchinh",matp:i},context:this,beforeSend:function(){t("#_shipping_city,#_shipping_address_2").html("").select2();var i=new Option("Loading...","");t("#_shipping_city, #_shipping_address_2").append(i)},success:function(i){loading_shipping=!1,t("#_shipping_city,#_shipping_address_2").html("").select2();var n=new Option("Chọn xã/phường/thị trấn","");t("#_shipping_address_2").append(n),i.success&&(i=i.data,n=new Option("Chọn quận/huyện",""),t("#_shipping_city").append(n),t.each(i,function(i,n){n=new Option(n.name,n.maqh);t("#_shipping_city").append(n)}))}}))}),0<t("#_shipping_address_2").length&&t("body").on("change select2:select select2-selecting","#_shipping_city",function(i){i=i.val;(i=i||t("#_shipping_city option:selected").val())&&t.ajax({type:"post",dataType:"json",url:woocommerce_district_admin.ajaxurl,data:{action:"load_diagioihanhchinh",maqh:i},context:this,beforeSend:function(){t("#_shipping_address_2").html("").select2();var i=new Option("Loading...","");t("#_shipping_address_2").append(i)},success:function(i){var n;t("#_shipping_address_2").html("").select2(e),i.success&&(n=i.data,i=new Option("Chọn xã/phường/thị trấn",""),t("#_shipping_address_2").append(i),t.each(n,function(i,n){n=new Option(n.name,n.xaid);t("#_shipping_address_2").append(n)}))}})})})}(jQuery);
  • woo-vietnam-checkout/trunk/assets/js/admin-district-shipping.js

    r2523064 r3127145  
    1 /*global $, woocommerce_district_shipping_rate_rows, ajaxurl */
    2 ( function( $, data, wp, ajaxurl ) {
    3 
    4     var wc_district_rate_box_rows_row_template = wp.template( 'district-rate-box-row-template' ),
    5         $boxes_table                    = $( '#flat_rate_boxes' ),
    6         $boxes                          = $boxes_table.find( 'tbody.flat_rate_boxes' );
    7 
    8     var wc_district_rate_box_rows = {
    9         init: function() {
    10             $boxes_table
    11                 .on( 'click', 'a.add-box', this.onAddRate )
    12                 .on( 'click', 'a.remove', this.onRemoveRate )
    13 
    14             var boxes_data = $boxes.data( 'boxes' );
    15 
    16             $( boxes_data ).each( function( i ) {
    17                 var size = $boxes.find( '.flat_rate_box' ).length;
    18                 $boxes.append( wc_district_rate_box_rows_row_template( {
    19                     box:  boxes_data[ i ],
    20                     index: size
    21                 } ) );
    22             } );
    23 
    24             $boxes.sortable( {
    25                 items: 'tr',
    26                 cursor: 'move',
    27                 axis: 'y',
    28                 handle: 'td.sort_dwas_td',
    29                 scrollSensitivity: 40,
    30                 helper: function(e,ui){
    31                     ui.children().each( function() {
    32                         $( this ).width( $(this).width() );
    33                     });
    34                     ui.css( 'left', '0' );
    35                     return ui;
    36                 },
    37                 start: function( event, ui ) {
    38                     ui.item.css('background-color','#f6f6f6');
    39                 },
    40                 stop: function( event, ui ) {
    41                     ui.item.removeAttr( 'style' );
    42                     wc_district_rate_box_rows.reindexRows();
    43                 }
    44             } );
    45         },
    46         onAddRate: function( event ) {
    47             event.preventDefault();
    48             var target = $boxes;
    49             var size   = target.find( '.flat_rate_box' ).length;
    50 
    51             target.append( wc_district_rate_box_rows_row_template( {
    52                 box:  {
    53                     box_id: '',
    54                     box_district: '',
    55                     box_cost: '',
    56                     box_title: '',              },
    57                 index: size
    58             } ) );
    59             $('.chosen_select').select2();
    60         },
    61         onRemoveRate: function( event ) {
    62             event.preventDefault();
    63             if ( confirm( data.i18n.delete_rates ) ) {
    64                 var box_ids  = [];
    65 
    66                 $boxes.find( 'tr td.check-column input:checked' ).each( function( i, el ) {
    67                     var box_id = $(el).closest( 'tr.flat_rate_box' ).find( '.box_id' ).val();
    68                     box_ids.push( box_id );
    69                     $(el).closest( 'tr.flat_rate_box' ).addClass( 'deleting' );
    70                 });
    71 
    72                 var ajax_data = {
    73                     action: 'woocommerce_district_rate_box_delete',
    74                     box_id: box_ids,
    75                     security: data.delete_box_nonce
    76                 };
    77 
    78                 $.post( ajaxurl, ajax_data, function(response) {
    79                     $( 'tr.deleting').fadeOut( '300', function() {
    80                         $( this ).remove();
    81                     } );
    82                 });
    83             }
    84         },
    85         reindexRows: function() {
    86             var loop = 0;
    87             $boxes.find( 'tr' ).each( function( index, row ) {
    88                 $('input.text, input.checkbox, select.select', row ).each( function( i, el ) {
    89                     var t = $(el);
    90                     t.attr( 'name', t.attr('name').replace(/\[([^[]*)\]/, "[" + loop + "]" ) );
    91                 });
    92                 $('input.input_district_condition', row ).each( function( i, el ) {
    93                     var t = $(el);
    94                     t.attr( 'name', t.attr('name').replace(/\[([^[]*)\]/, "[" + loop + "]" ) );
    95                 });
    96                 loop++;
    97             });
    98         }
    99     };
    100 
    101     wc_district_rate_box_rows.init();
    102 
    103     $(document).ready(function () {
    104         $('body').on('change','.shipping_advance', function () {
    105             var thisParent = $(this).parents('.district_shipping_advance');
    106             var tableThis = thisParent.find('.dwas_price_list');
    107             if(tableThis.hasClass('dwas_hidden') && $(this).is(":checked")){
    108                 tableThis.removeClass('dwas_hidden').addClass('dwas_show');
    109             }else{
    110                 tableThis.addClass('dwas_hidden').removeClass('dwas_show');
    111             }
    112         });
    113         $('body').on('change', '.shipping_advance_w', function () {
    114             var thisParent = $(this).parents('.district_shipping_advance_weight');
    115             var tableThis = thisParent.find('.dwas_price_list');
    116             if(tableThis.hasClass('dwas_hidden') && $(this).is(":checked")){
    117                 tableThis.removeClass('dwas_hidden').addClass('dwas_show');
    118             }else{
    119                 tableThis.addClass('dwas_hidden').removeClass('dwas_show');
    120             }
    121         });
    122         $('body').on('click', '.dwas_add_condition', function () {
    123             var thisParent = $(this).parents('.district_shipping_advance');
    124             var cloneThis = thisParent.find('.dwas_price_list_tr').eq(1).clone();
    125             cloneThis.find('input').val('').attr('value','');
    126             $('.dwas_price_list_box',thisParent).append(cloneThis);
    127 
    128             var loop = -1;
    129             $('.dwas_price_list_box .dwas_price_list_tr',thisParent).each(function(index, row){
    130                 $('input.input_district_condition', row ).each( function( i, el ) {
    131                     var t = $(el);
    132                     t.attr( 'name', t.attr('name').replace(/\[dk_([^[]*)\]/, "[dk_" + loop + "]" ) );
    133                 });
    134                 loop++;
    135             });
    136 
    137             return false;
    138         });
    139         $('body').on('click', '.dwas_delete_condition', function () {
    140             var thisParent = $(this).parents('.dwas_price_list_tr');
    141             var thisBox = $(this).parents('.dwas_price_list_box');
    142             if($('.dwas_price_list_tr',thisBox).length > 2){
    143                 thisParent.fadeOut(400,function () {
    144                     $(this).remove();
    145                     var loop = -1;
    146                     $('.dwas_price_list_tr',thisBox).each(function(index, row){
    147                         $('input.input_district_condition', row ).each( function( i, el ) {
    148                             var t = $(el);
    149                             t.attr( 'name', t.attr('name').replace(/\[dk_([^[]*)\]/, "[dk_" + loop + "]" ) );
    150                         });
    151                         loop++;
    152                     });
    153                 });
    154             }
    155             return false;
    156         });
    157         //all condition
    158         if($('#woocommerce_devvn_district_zone_shipping_all_price_condition').length > 0){
    159             $('#woocommerce_devvn_district_zone_shipping_all_price_condition').closest('tr').css("display", "none");
    160             $('body').on('click','.dwas_save_condition, .all_condition_district > label',function(){
    161                 var loading = false;
    162                 var conditionVal = $('#mainform').serialize();
    163                 if(!loading) {
    164                     $.ajax({
    165                         type: "post",
    166                         dataType: "json",
    167                         url: ajaxurl,
    168                         data: {action: "woocommerce_district_rate_array_to_serialize", data_form: conditionVal},
    169                         context: this,
    170                         beforeSend: function () {
    171                             loading = true;
    172                             $('.district_shipping_advance.all_condition_district').addClass('loading');
    173 
    174                         },
    175                         success: function (response) {
    176                             if(response.success){
    177                                 $('#woocommerce_devvn_district_zone_shipping_all_price_condition').val(response.data);
    178                             }
    179                             $('.district_shipping_advance.all_condition_district').removeClass('loading');
    180                             loading = false;
    181                         }
    182                     })
    183                 }
    184             });
    185         }
    186         if($('#woocommerce_devvn_district_zone_shipping_all_price_condition_w').length > 0) {
    187             $('#woocommerce_devvn_district_zone_shipping_all_price_condition_w').closest('tr').css("display", "none");
    188             $('body').on('click', '.dwas_save_condition_w, .all_condition_district_w > label', function () {
    189                 var loading = false;
    190                 var conditionVal = $('#mainform').serialize();
    191                 if (!loading) {
    192                     $.ajax({
    193                         type: "post",
    194                         dataType: "json",
    195                         url: ajaxurl,
    196                         data: {action: "woocommerce_district_rate_array_to_serialize_weight", data_form: conditionVal},
    197                         context: this,
    198                         beforeSend: function () {
    199                             loading = true;
    200                             $('.district_shipping_advance.all_condition_district_w').addClass('loading');
    201 
    202                         },
    203                         success: function (response) {
    204                             if (response.success) {
    205                                 $('#woocommerce_devvn_district_zone_shipping_all_price_condition_w').val(response.data);
    206                             }
    207                             $('.district_shipping_advance.all_condition_district_w').removeClass('loading');
    208                             loading = false;
    209                         }
    210                     });
    211                 }
    212             });
    213         }
    214     })
    215 })( jQuery, woocommerce_district_shipping_rate_rows, wp, ajaxurl );
     1!function(a,i,t,e){var n=t.template("district-rate-box-row-template"),o=a("#flat_rate_boxes"),s=o.find("tbody.flat_rate_boxes"),c={init:function(){o.on("click","a.add-box",this.onAddRate).on("click","a.remove",this.onRemoveRate);var e=s.data("boxes");a(e).each(function(t){var i=s.find(".flat_rate_box").length;s.append(n({box:e[t],index:i}))}),s.sortable({items:"tr",cursor:"move",axis:"y",handle:"td.sort_dwas_td",scrollSensitivity:40,helper:function(t,i){return i.children().each(function(){a(this).width(a(this).width())}),i.css("left","0"),i},start:function(t,i){i.item.css("background-color","#f6f6f6")},stop:function(t,i){i.item.removeAttr("style"),c.reindexRows()}})},onAddRate:function(t){t.preventDefault();var i=s,t=i.find(".flat_rate_box").length;i.append(n({box:{box_id:"",box_district:"",box_cost:"",box_title:""},index:t})),a(".chosen_select").select2()},onRemoveRate:function(t){var n;t.preventDefault(),confirm(i.i18n.delete_rates)&&(n=[],s.find("tr td.check-column input:checked").each(function(t,i){var e=a(i).closest("tr.flat_rate_box").find(".box_id").val();n.push(e),a(i).closest("tr.flat_rate_box").addClass("deleting")}),t={action:"woocommerce_district_rate_box_delete",box_id:n,security:i.delete_box_nonce},a.post(e,t,function(t){a("tr.deleting").fadeOut("300",function(){a(this).remove()})}))},reindexRows:function(){var e=0;s.find("tr").each(function(t,i){a("input.text, input.checkbox, select.select",i).each(function(t,i){i=a(i);i.attr("name",i.attr("name").replace(/\[([^[]*)\]/,"["+e+"]"))}),a("input.input_district_condition",i).each(function(t,i){i=a(i);i.attr("name",i.attr("name").replace(/\[([^[]*)\]/,"["+e+"]"))}),e++})}};c.init(),a(document).ready(function(){a("body").on("change",".shipping_advance",function(){var t=a(this).parents(".district_shipping_advance").find(".dwas_price_list");t.hasClass("dwas_hidden")&&a(this).is(":checked")?t.removeClass("dwas_hidden").addClass("dwas_show"):t.addClass("dwas_hidden").removeClass("dwas_show")}),a("body").on("change",".shipping_advance_w",function(){var t=a(this).parents(".district_shipping_advance_weight").find(".dwas_price_list");t.hasClass("dwas_hidden")&&a(this).is(":checked")?t.removeClass("dwas_hidden").addClass("dwas_show"):t.addClass("dwas_hidden").removeClass("dwas_show")}),a("body").on("click",".dwas_add_condition",function(){var t=a(this).parents(".district_shipping_advance"),i=t.find(".dwas_price_list_tr").eq(1).clone();i.find("input").val("").attr("value",""),a(".dwas_price_list_box",t).append(i);var e=-1;return a(".dwas_price_list_box .dwas_price_list_tr",t).each(function(t,i){a("input.input_district_condition",i).each(function(t,i){i=a(i);i.attr("name",i.attr("name").replace(/\[dk_([^[]*)\]/,"[dk_"+e+"]"))}),e++}),!1}),a("body").on("click",".dwas_delete_condition",function(){var t=a(this).parents(".dwas_price_list_tr"),i=a(this).parents(".dwas_price_list_box");return 2<a(".dwas_price_list_tr",i).length&&t.fadeOut(400,function(){a(this).remove();var e=-1;a(".dwas_price_list_tr",i).each(function(t,i){a("input.input_district_condition",i).each(function(t,i){i=a(i);i.attr("name",i.attr("name").replace(/\[dk_([^[]*)\]/,"[dk_"+e+"]"))}),e++})}),!1}),0<a("#woocommerce_devvn_district_zone_shipping_all_price_condition").length&&(a("#woocommerce_devvn_district_zone_shipping_all_price_condition").closest("tr").css("display","none"),a("body").on("click",".dwas_save_condition, .all_condition_district > label",function(){var i=!1,t=a("#mainform").serialize();i||a.ajax({type:"post",dataType:"json",url:e,data:{action:"woocommerce_district_rate_array_to_serialize",data_form:t},context:this,beforeSend:function(){i=!0,a(".district_shipping_advance.all_condition_district").addClass("loading")},success:function(t){t.success&&a("#woocommerce_devvn_district_zone_shipping_all_price_condition").val(t.data),a(".district_shipping_advance.all_condition_district").removeClass("loading"),i=!1}})})),0<a("#woocommerce_devvn_district_zone_shipping_all_price_condition_w").length&&(a("#woocommerce_devvn_district_zone_shipping_all_price_condition_w").closest("tr").css("display","none"),a("body").on("click",".dwas_save_condition_w, .all_condition_district_w > label",function(){var i=!1,t=a("#mainform").serialize();i||a.ajax({type:"post",dataType:"json",url:e,data:{action:"woocommerce_district_rate_array_to_serialize_weight",data_form:t},context:this,beforeSend:function(){i=!0,a(".district_shipping_advance.all_condition_district_w").addClass("loading")},success:function(t){t.success&&a("#woocommerce_devvn_district_zone_shipping_all_price_condition_w").val(t.data),a(".district_shipping_advance.all_condition_district_w").removeClass("loading"),i=!1}})}))})}(jQuery,woocommerce_district_shipping_rate_rows,wp,ajaxurl);
  • woo-vietnam-checkout/trunk/assets/js/devvn_tinhthanh.js

    r2523064 r3127145  
    44!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
    55
    6 (function($){
    7     $(document).ready(function(){
    8         var $defaultSetting = {
    9             formatNoMatches: vncheckout_array.formatNoMatches,
    10         };
    11         var loading_billing = loading_shipping = false;
    12         var billing_city_field = $('#billing_city_field');
    13         var billing_address_2_field = $('#billing_address_2_field');
    14         var shipping_city_field = $('#shipping_city_field');
    15         var shipping_address_2_field = $('#shipping_address_2_field');
    16         //billing
    17         $('#billing_state').select2($defaultSetting);
    18         $('#billing_city').select2($defaultSetting);
    19         $('#billing_address_2').select2($defaultSetting);
    20 
    21         $('body #billing_state').on('select2:select select2-selecting',function(e){
    22             $( "#billing_city option" ).val('');
    23             var matp = e.val;
    24             if(!matp) matp = $( "#billing_state option:selected" ).val();
    25             if(matp && !loading_billing){
    26                 loading_billing = true;
    27                 $.ajax({
    28                     type : "post",
    29                     dataType : "json",
    30                     url : vncheckout_array.get_address,
    31                     data : {action: "load_diagioihanhchinh", matp : matp},
    32                     context: this,
    33                     beforeSend: function(){
    34                         billing_city_field.addClass('devvn_loading');
    35                         billing_address_2_field.addClass('devvn_loading');
    36                     },
    37                     success: function(response) {
    38                         loading_billing = false;
    39                         $("#billing_city,#billing_address_2").html('').select2();
    40                         if(response.success) {
    41                             var listQH = response.data;
    42                             var newState = new Option('', '');
    43                             $("#billing_city").append(newState);
    44                             $.each(listQH,function(index,value){
    45                                 var newState = new Option(value.name, value.maqh);
    46                                 $("#billing_city").append(newState);
    47                             });
    48                         }
    49                         billing_city_field.removeClass('devvn_loading');
    50                         billing_address_2_field.removeClass('devvn_loading');
    51                     }
    52                 });
    53             }
    54         });
    55         if($('#billing_address_2').length > 0){
    56             $('#billing_city').on('select2:select select2-selecting',function(e){
    57                 var maqh = e.val;
    58                 if(!maqh) maqh = $( "#billing_city option:selected" ).val();
    59                 if(maqh) {
    60                     $.ajax({
    61                         type: "post",
    62                         dataType: "json",
    63                         url: vncheckout_array.get_address,
    64                         data: {action: "load_diagioihanhchinh", maqh: maqh},
    65                         context: this,
    66                         beforeSend: function(){
    67                             billing_address_2_field.addClass('devvn_loading');
    68                         },
    69                         success: function (response) {
    70                             $("#billing_address_2").html('').select2($defaultSetting);
    71                             if (response.success) {
    72                                 var listQH = response.data;
    73                                 var newState = new Option('', '');
    74                                 $("#billing_address_2").append(newState);
    75                                 $.each(listQH, function (index, value) {
    76                                     var newState = new Option(value.name, value.xaid);
    77                                     $("#billing_address_2").append(newState);
    78                                 });
    79                             }
    80                             billing_address_2_field.removeClass('devvn_loading');
    81                         }
    82                     });
    83                 }
    84             });
    85         }
    86         //shipping
    87         $('#shipping_state').select2($defaultSetting);
    88         $('#shipping_city').select2($defaultSetting);
    89         $('#shipping_address_2').select2($defaultSetting);
    90 
    91         $('body #shipping_state').on('select2:select select2-selecting',function(e){
    92             $( "#shipping_city option" ).val('');
    93             var matp = e.val;
    94             if(!matp) matp = $( "#shipping_state option:selected" ).val();
    95             if(matp && !loading_shipping){
    96                 loading_shipping = true;
    97                 $.ajax({
    98                     type : "post",
    99                     dataType : "json",
    100                     url : vncheckout_array.get_address,
    101                     data : {action: "load_diagioihanhchinh", matp : matp},
    102                     context: this,
    103                     beforeSend: function(){
    104                         shipping_city_field.addClass('devvn_loading');
    105                         shipping_address_2_field.addClass('devvn_loading');
    106                     },
    107                     success: function(response) {
    108                         loading_shipping = false;
    109                         $("#shipping_city,#shipping_address_2").html('').select2();
    110                         if(response.success) {
    111                             var listQH = response.data;
    112                             var newState = new Option('', '');
    113                             $("#shipping_city").append(newState);
    114                             $.each(listQH,function(index,value){
    115                                 var newState = new Option(value.name, value.maqh);
    116                                 $("#shipping_city").append(newState);
    117                             });
    118                         }
    119                         shipping_city_field.removeClass('devvn_loading');
    120                         shipping_address_2_field.removeClass('devvn_loading');
    121                     }
    122                 });
    123             }
    124         });
    125         if($('#shipping_address_2').length > 0){
    126             $('#shipping_city').on('select2:select select2-selecting',function(e){
    127                 var maqh = e.val;
    128                 if(!maqh) maqh = $( "#shipping_city option:selected" ).val();
    129                 if(maqh) {
    130                     $.ajax({
    131                         type: "post",
    132                         dataType: "json",
    133                         url: vncheckout_array.get_address,
    134                         data: {action: "load_diagioihanhchinh", maqh: maqh},
    135                         context: this,
    136                         beforeSend: function(){
    137                             shipping_address_2_field.addClass('devvn_loading');
    138                         },
    139                         success: function (response) {
    140                             $("#shipping_address_2").html('').select2($defaultSetting);
    141                             if (response.success) {
    142                                 var listQH = response.data;
    143                                 var newState = new Option('', '');
    144                                 $("#shipping_address_2").append(newState);
    145                                 $.each(listQH, function (index, value) {
    146                                     var newState = new Option(value.name, value.xaid);
    147                                     $("#shipping_address_2").append(newState);
    148                                 });
    149                             }
    150                             shipping_address_2_field.removeClass('devvn_loading');
    151                         }
    152                     });
    153                 }
    154             });
    155         }
    156         if($('#calc_shipping_city_field').length > 0){
    157             $( document.body ).bind( 'country_to_state_changed updated_wc_div country_to_state_changing', function() {
    158                 var district_field = $('#calc_shipping_city_field #calc_shipping_city');
    159                 var default_val = district_field.val();
    160                 var state_default = $('#calc_shipping_state').val();
    161 
    162                 district_field.select2();
    163                 var loadingText = 'Loading...';
    164                 $('#calc_shipping_city_field .select2-selection__placeholder').html(loadingText);
    165 
    166                 var loading_cacl = false;
    167                 var devvn_district_by_state = function(state_id){
    168 
    169                     $('#calc_shipping_city_field .select2-selection__placeholder').html(loadingText);
    170 
    171                     if(state_id && !loading_cacl) {
    172                         $.ajax({
    173                             type: "post",
    174                             dataType: "json",
    175                             url: vncheckout_array.get_address,
    176                             data: {action: "load_diagioihanhchinh", matp: state_id},
    177                             context: this,
    178                             beforeSend: function () {
    179                                 loading_cacl = true;
    180                             },
    181                             success: function (response) {
    182                                 loading_cacl = false;
    183                                 if (response.success) {
    184                                     var listQH = response.data;
    185                                     var data = [];
    186                                     $.each(listQH, function (index, value) {
    187                                         data.push({id:value.maqh,text:value.name});
    188                                     });
    189                                     district_field.html('').select2({
    190                                         placeholder: 'Chọn quận/huyện',
    191                                         data: data,
    192                                     });
    193                                 }
    194                             }
    195                         });
    196                     }
    197                 };
    198                 var devvn_city_to_district_select2 = function() {
    199                     $( 'body select.state_select:visible' ).each( function() {
    200                         devvn_district_by_state($(this).val());
    201                         $(this, 'body').on('change select2:select', function () {
    202                             devvn_district_by_state($(this).val());
    203                         });
    204                     });
    205                 };
    206                 devvn_city_to_district_select2();
    207             });
    208         }
    209         //
    210         $('.get_address_byphone').magnificPopup({
    211             type:'inline',
    212             midClick: true,
    213             showCloseBtn: false
    214         });
    215 
    216         var loading_get_address = false;
    217         $('body').on('click', '.btn_get_address', function () {
    218             if(loading_get_address) return false;
    219             var oldThis = $(this);
    220             var thisParent = $(this).closest('#get_address_content');
    221             var phone = $('#sdt_get_address', thisParent).val();
    222             var mess = $('.get_address_content_mess', thisParent);
    223             var g_recaptcha = '';
    224 
    225             if(!phone || !/^0+(\d{9,10})$/.test(phone)){
    226                 mess.html(vncheckout_array.phone_error);
    227                 return false;
    228             }else {
    229                 mess.html('');
    230                 if($('#g-recaptcha-response', thisParent).length > 0){
    231                     g_recaptcha = $('#g-recaptcha-response', thisParent).val();
    232                     if(!g_recaptcha){
    233                         mess.html('Vui lòng nhập mã xác thực.');
    234                         return false;
    235                     }
    236                 }
    237                 $.ajax({
    238                     type: "post",
    239                     dataType: "json",
    240                     url: vncheckout_array.admin_ajax,
    241                     data: {action: "get_address_byphone", phone: phone, 'g-recaptcha-response': g_recaptcha},
    242                     context: this,
    243                     beforeSend: function () {
    244                         mess.html(vncheckout_array.loading_text);
    245                         oldThis.addClass('devvn_loading');
    246                         loading_get_address = true;
    247                     },
    248                     success: function (response) {
    249                         //console.log(response);
    250                         if (response.success) {
    251                             $("#billing_city,#billing_address_2").html('').select2();
    252                             if(response.data.billing.billing_state){
    253 
    254                                 $("#billing_state").val(response.data.billing.billing_state).select2().trigger('change');
    255 
    256                                 if($("#billing_state").val()){
    257 
    258                                     var listQH = response.data.district;
    259                                     var newState = new Option('', '');
    260                                     $("#billing_city").append(newState);
    261                                     $.each(listQH,function(index,value){
    262                                         var newState = new Option(value.name, value.maqh);
    263                                         $("#billing_city").append(newState);
    264                                     });
    265 
    266                                     if(response.data.billing.billing_city && $('#billing_address_2').length > 0){
    267                                         $('#billing_address_2').val(response.data.billing.billing_address_2);
    268                                         var listQH = response.data.ward;
    269                                         var newState = new Option('', '');
    270                                         $("#billing_address_2").append(newState);
    271                                         $.each(listQH,function(index,value){
    272                                             var newState = new Option(value.name, value.xaid);
    273                                             $("#billing_address_2").append(newState);
    274                                         });
    275                                     }
    276                                 }
    277 
    278                             }
    279 
    280                             $.each(response.data.billing, function (index, thisVal) {
    281                                 if($('#'+index).is("select")) {
    282                                     $('#'+index).val(thisVal);
    283                                 }else{
    284                                     $('#'+index).val(thisVal);
    285                                 }
    286                             });
    287                             mess.html('');
    288                             $('#billing_address_2').trigger('change');
    289                             $.magnificPopup.close();
    290                         }else{
    291                             mess.html(vncheckout_array.loadaddress_error);
    292                             //thisParent.addClass('get_address_error');
    293                             //$('.btn_cancel', thisParent).html('Okie');
    294                         }
    295                         oldThis.removeClass('devvn_loading');
    296                         loading_get_address = false;
    297                     }
    298                 });
    299             }
    300             return false;
    301         });
    302         $('body').on('click', '.btn_cancel', function () {
    303             var thisParent = $(this).closest('#get_address_content');
    304             var mess = $('.get_address_content_mess', thisParent);
    305             thisParent.removeClass('get_address_error');
    306             $.magnificPopup.close();
    307             loading_get_address = false;
    308             mess.html('');
    309             if($('#billing_first_name').length > 0){
    310                 $('#billing_first_name').focus();
    311             }else{
    312                 $('#billing_last_name').focus();
    313             }
    314             return false;
    315         });
    316         //
    317         /*$('select').on('select2:open', function() {
    318             $('.select2-search input').prop('focus', 0);
    319         });*/
    320     });
    321 })(jQuery);
     6!function(o){o(document).ready(function(){var i={formatNoMatches:vncheckout_array.formatNoMatches},a=loading_shipping=!1,t=o("#billing_city_field"),s=o("#billing_address_2_field"),l=o("#shipping_city_field"),c=o("#shipping_address_2_field");o("#billing_state").select2(i),o("#billing_city").select2(i),o("#billing_address_2").select2(i),o("body #billing_state").on("select2:select select2-selecting",function(e){o("#billing_city option").val("");e=e.val;(e=e||o("#billing_state option:selected").val())&&!a&&(a=!0,o.ajax({type:"post",dataType:"json",url:vncheckout_array.get_address,data:{action:"load_diagioihanhchinh",matp:e},context:this,beforeSend:function(){t.addClass("devvn_loading"),s.addClass("devvn_loading")},success:function(e){var n;a=!1,o("#billing_city,#billing_address_2").html("").select2(),e.success&&(n=e.data,e=new Option("",""),o("#billing_city").append(e),o.each(n,function(e,n){n=new Option(n.name,n.maqh);o("#billing_city").append(n)})),t.removeClass("devvn_loading"),s.removeClass("devvn_loading")}}))}),0<o("#billing_address_2").length&&o("#billing_city").on("select2:select select2-selecting",function(e){e=e.val;(e=e||o("#billing_city option:selected").val())&&o.ajax({type:"post",dataType:"json",url:vncheckout_array.get_address,data:{action:"load_diagioihanhchinh",maqh:e},context:this,beforeSend:function(){s.addClass("devvn_loading")},success:function(e){var n;o("#billing_address_2").html("").select2(i),e.success&&(n=e.data,e=new Option("",""),o("#billing_address_2").append(e),o.each(n,function(e,n){n=new Option(n.name,n.xaid);o("#billing_address_2").append(n)})),s.removeClass("devvn_loading")}})}),o("#shipping_state").select2(i),o("#shipping_city").select2(i),o("#shipping_address_2").select2(i),o("body #shipping_state").on("select2:select select2-selecting",function(e){o("#shipping_city option").val("");e=e.val;(e=e||o("#shipping_state option:selected").val())&&!loading_shipping&&(loading_shipping=!0,o.ajax({type:"post",dataType:"json",url:vncheckout_array.get_address,data:{action:"load_diagioihanhchinh",matp:e},context:this,beforeSend:function(){l.addClass("devvn_loading"),c.addClass("devvn_loading")},success:function(e){var n;loading_shipping=!1,o("#shipping_city,#shipping_address_2").html("").select2(),e.success&&(n=e.data,e=new Option("",""),o("#shipping_city").append(e),o.each(n,function(e,n){n=new Option(n.name,n.maqh);o("#shipping_city").append(n)})),l.removeClass("devvn_loading"),c.removeClass("devvn_loading")}}))}),0<o("#shipping_address_2").length&&o("#shipping_city").on("select2:select select2-selecting",function(e){e=e.val;(e=e||o("#shipping_city option:selected").val())&&o.ajax({type:"post",dataType:"json",url:vncheckout_array.get_address,data:{action:"load_diagioihanhchinh",maqh:e},context:this,beforeSend:function(){c.addClass("devvn_loading")},success:function(e){var n;o("#shipping_address_2").html("").select2(i),e.success&&(n=e.data,e=new Option("",""),o("#shipping_address_2").append(e),o.each(n,function(e,n){n=new Option(n.name,n.xaid);o("#shipping_address_2").append(n)})),c.removeClass("devvn_loading")}})}),0<o("#calc_shipping_city_field").length&&o(document.body).bind("country_to_state_changed updated_wc_div country_to_state_changing",function(){var n=o("#calc_shipping_city_field #calc_shipping_city");n.val(),o("#calc_shipping_state").val();n.select2();var i="Loading...";o("#calc_shipping_city_field .select2-selection__placeholder").html(i);function e(e){o("#calc_shipping_city_field .select2-selection__placeholder").html(i),e&&!a&&o.ajax({type:"post",dataType:"json",url:vncheckout_array.get_address,data:{action:"load_diagioihanhchinh",matp:e},context:this,beforeSend:function(){a=!0},success:function(e){var i;a=!1,e.success&&(e=e.data,i=[],o.each(e,function(e,n){i.push({id:n.maqh,text:n.name})}),n.html("").select2({placeholder:"Chọn quận/huyện",data:i}))}})}var a=!1;o("body select.state_select:visible").each(function(){e(o(this).val()),o(this,"body").on("change select2:select",function(){e(o(this).val())})})}),o(".get_address_byphone").magnificPopup({type:"inline",midClick:!0,showCloseBtn:!1});var d=!1;o("body").on("click",".btn_get_address",function(){if(d)return!1;var a=o(this),e=o(this).closest("#get_address_content"),n=o("#sdt_get_address",e).val(),t=o(".get_address_content_mess",e),i="";return n&&/^0+(\d{9,10})$/.test(n)?(t.html(""),0<o("#g-recaptcha-response",e).length&&!(i=o("#g-recaptcha-response",e).val())?t.html("Vui lòng nhập mã xác thực."):o.ajax({type:"post",dataType:"json",url:vncheckout_array.admin_ajax,data:{action:"get_address_byphone",phone:n,"g-recaptcha-response":i},context:this,beforeSend:function(){t.html(vncheckout_array.loading_text),a.addClass("devvn_loading"),d=!0},success:function(e){var n,i;e.success?(o("#billing_city,#billing_address_2").html("").select2(),e.data.billing.billing_state&&(o("#billing_state").val(e.data.billing.billing_state).select2().trigger("change"),o("#billing_state").val()&&(n=e.data.district,i=new Option("",""),o("#billing_city").append(i),o.each(n,function(e,n){n=new Option(n.name,n.maqh);o("#billing_city").append(n)}),e.data.billing.billing_city&&0<o("#billing_address_2").length&&(o("#billing_address_2").val(e.data.billing.billing_address_2),n=e.data.ward,i=new Option("",""),o("#billing_address_2").append(i),o.each(n,function(e,n){n=new Option(n.name,n.xaid);o("#billing_address_2").append(n)})))),o.each(e.data.billing,function(e,n){o("#"+e).is("select"),o("#"+e).val(n)}),t.html(""),o("#billing_address_2").trigger("change"),o.magnificPopup.close()):t.html(vncheckout_array.loadaddress_error),a.removeClass("devvn_loading"),d=!1}}),!1):(t.html(vncheckout_array.phone_error),!1)}),o("body").on("click",".btn_cancel",function(){var e=o(this).closest("#get_address_content"),n=o(".get_address_content_mess",e);return e.removeClass("get_address_error"),o.magnificPopup.close(),d=!1,n.html(""),(0<o("#billing_first_name").length?o("#billing_first_name"):o("#billing_last_name")).focus(),!1})})}(jQuery);
  • woo-vietnam-checkout/trunk/devvn-woo-address-selectbox.php

    r3069494 r3127145  
    33 * Plugin Name: Woocommerce Vietnam Checkout
    44 * Plugin URI: https://levantoan.com/plugin-tinh-phi-van-chuyen-cho-quan-huyen-trong-woocommerce/
    5  * Version: 2.1.0
     5 * Version: 2.1.1
    66 * Description: Add province/city, district, commune/ward/town to checkout form and simplify checkout form
    77 * Author: Lê Văn Toản
     
    1010 * Domain Path: /languages
    1111 * WC requires at least: 8.0.0
    12  * WC tested up to: 8.7.0
     12 * WC tested up to: 9.1.2
    1313 * License: GPLv3
    1414 * License URI: http://www.gnu.org/licenses/gpl-3.0
     
    5555        protected static $instance;
    5656
    57         protected $_version = '2.1.0';
     57        protected $_version = '2.1.1';
    5858        public $_optionName = 'devvn_woo_district';
    5959        public $_optionGroup = 'devvn-district-options-group';
     
    110110
    111111            add_action('woocommerce_admin_order_data_after_shipping_address', array($this, 'devvn_after_shipping_address'), 10, 1);
    112             add_action('save_post', array($this, 'save_shipping_phone_meta'), 10, 3);
     112            add_action('woocommerce_after_order_object_save', array($this, 'save_shipping_phone_meta'), 10);
    113113            add_filter('woocommerce_order_formatted_shipping_address', array($this, 'devvn_woocommerce_order_formatted_shipping_address'), 10, 2);
    114114
     
    916916                $city = $order->get_billing_state();
    917917                $district = $order->get_billing_city();
     918            }elseif(isset($_GET['id'])){
     919                $order_id = intval($_GET['id']);
     920                $order = wc_get_order( $order_id );
     921                $city = $order->get_billing_state();
     922                $district = $order->get_billing_city();
    918923            }
    919924
     
    982987            $city = $district = '';
    983988            if($order && !is_wp_error($order)) {
     989                $city = $order->get_shipping_state();
     990                $district = $order->get_shipping_city();
     991            }elseif(isset($_GET['id'])){
     992                $order_id = intval($_GET['id']);
     993                $order = wc_get_order( $order_id );
    984994                $city = $order->get_shipping_state();
    985995                $district = $order->get_shipping_city();
     
    12951305        }
    12961306
    1297         function save_shipping_phone_meta($post_id, $post, $update)
    1298         {
    1299             if (
    1300                 isset($_POST['_shipping_phone'])
    1301                 && (
    1302                         ('shop_order' === get_post_type( $post_id ) && version_compare(WC()->version, '8.0.0', '<'))
    1303                         || ('shop_order' === OrderUtil::get_order_type( $post_id ) && version_compare(WC()->version, '8.0.0', '>='))
    1304                 )
    1305             ) {
    1306                 $order = wc_get_order($post_id);
    1307                 $order->update_meta_data( '_shipping_phone', sanitize_text_field($_POST['_shipping_phone']) );
    1308                 $order->save();
     1307        function save_shipping_phone_meta($order)
     1308        {
     1309            if ( isset($_POST['_shipping_phone']) ) {
     1310                $order->update_meta_data('_shipping_phone', sanitize_text_field($_POST['_shipping_phone']));
    13091311            }
    13101312        }
  • woo-vietnam-checkout/trunk/readme.txt

    r3069494 r3127145  
    55Requires at least: 4.3
    66Tested up to: 6.4.2
    7 Stable tag: 2.0.9
     7Stable tag: 2.1.1
    88License: GPLv3
    99License URI: https://www.gnu.org/licenses/gpl-3.0.html
     
    8888Thông tin thêm [về plugin này](https://levantoan.com/lua-chon-tinhthanh-pho-vao-form-checkout-cua-woocommerce/).
    8989Xem thêm bản PRO [tại đây](https://levantoan.com/plugin-tinh-phi-van-chuyen-cho-quan-huyen-trong-woocommerce/).
     90
     91= 2.1.1 =
     92
     93* Fix lỗi với W00 9.1.x
     94* Fix lỗi load địa chỉ trong admin
    9095
    9196= 2.1.0 =
Note: See TracChangeset for help on using the changeset viewer.