Tweak - Use of single backbone modal script for shipping and order panel
This commit is contained in:
parent
15402c2c3d
commit
4c7a78ab31
|
@ -1,145 +0,0 @@
|
|||
/*global jQuery, Backbone, _ */
|
||||
( function( $, Backbone, _ ) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* WooCommerce Backbone Modal plugin
|
||||
*
|
||||
* @param {object} options
|
||||
*/
|
||||
$.fn.WCBackboneModal = function( options ) {
|
||||
return this.each( function() {
|
||||
( new $.WCBackboneModal( $( this ), options ) );
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize the Backbone Modal
|
||||
*
|
||||
* @param {object} element [description]
|
||||
* @param {object} options [description]
|
||||
*/
|
||||
$.WCBackboneModal = function( element, options ) {
|
||||
// Set settings
|
||||
var settings = $.extend( {}, $.WCBackboneModal.defaultOptions, options );
|
||||
|
||||
if ( settings.template ) {
|
||||
new $.WCBackboneModal.View({
|
||||
target: settings.template,
|
||||
string: settings.variable
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Set default options
|
||||
*
|
||||
* @type {object}
|
||||
*/
|
||||
$.WCBackboneModal.defaultOptions = {
|
||||
template: '',
|
||||
variable: {}
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the Backbone Modal
|
||||
*
|
||||
* @return {null}
|
||||
*/
|
||||
$.WCBackboneModal.View = Backbone.View.extend({
|
||||
tagName: 'div',
|
||||
id: 'wc-backbone-modal-dialog',
|
||||
_target: undefined,
|
||||
_string: undefined,
|
||||
events: {
|
||||
'click .modal-close': 'closeButton',
|
||||
'click #btn-ok': 'addButton',
|
||||
'touchstart #btn-ok': 'addButton',
|
||||
'keydown': 'keyboardActions'
|
||||
},
|
||||
initialize: function( data ) {
|
||||
this._target = data.target;
|
||||
this._string = data.string;
|
||||
_.bindAll( this, 'render' );
|
||||
this.render();
|
||||
},
|
||||
render: function() {
|
||||
var template = wp.template( this._target );
|
||||
|
||||
this.$el.attr( 'tabindex' , '0' ).append(
|
||||
template( this._string )
|
||||
);
|
||||
|
||||
$( document.body ).css({
|
||||
'overflow': 'hidden'
|
||||
}).append( this.$el );
|
||||
|
||||
var $content = $( '.wc-backbone-modal-content' ).find( 'article' );
|
||||
var content_h = ( $content.height() < 90 ) ? 90 : $content.height();
|
||||
var max_h = $( window ).height() - 200;
|
||||
|
||||
if ( max_h > 400 ) {
|
||||
max_h = 400;
|
||||
}
|
||||
|
||||
if ( content_h > max_h ) {
|
||||
$content.css({
|
||||
'overflow': 'auto',
|
||||
height: max_h + 'px'
|
||||
});
|
||||
} else {
|
||||
$content.css({
|
||||
'overflow': 'visible',
|
||||
height: ( content_h > 90 ) ? 'auto' : content_h + 'px'
|
||||
});
|
||||
}
|
||||
|
||||
$( document.body ).trigger( 'wc_backbone_modal_loaded', this._target );
|
||||
},
|
||||
closeButton: function( e ) {
|
||||
e.preventDefault();
|
||||
$( document.body ).trigger( 'wc_backbone_modal_before_remove', this._target );
|
||||
this.undelegateEvents();
|
||||
$( document ).off( 'focusin' );
|
||||
$( document.body ).css({
|
||||
'overflow': 'auto'
|
||||
});
|
||||
this.remove();
|
||||
$( document.body ).trigger( 'wc_backbone_modal_removed', this._target );
|
||||
},
|
||||
addButton: function( e ) {
|
||||
$( document.body ).trigger( 'wc_backbone_modal_response', [ this._target, this.getFormData() ] );
|
||||
this.closeButton( e );
|
||||
},
|
||||
getFormData: function() {
|
||||
var data = {};
|
||||
|
||||
$( document.body ).trigger( 'wc_backbone_modal_before_update', this._target );
|
||||
|
||||
$.each( $( 'form', this.$el ).serializeArray(), function( index, item ) {
|
||||
if ( data.hasOwnProperty( item.name ) ) {
|
||||
data[ item.name ] = $.makeArray( data[ item.name ] );
|
||||
data[ item.name ].push( item.value );
|
||||
} else {
|
||||
data[ item.name ] = item.value;
|
||||
}
|
||||
});
|
||||
|
||||
return data;
|
||||
},
|
||||
keyboardActions: function( e ) {
|
||||
var button = e.keyCode || e.which;
|
||||
|
||||
// Enter key
|
||||
if ( 13 === button && ! ( e.target.tagName && ( e.target.tagName.toLowerCase() === 'input' || e.target.tagName.toLowerCase() === 'textarea' ) ) ) {
|
||||
this.addButton( e );
|
||||
}
|
||||
|
||||
// ESC key
|
||||
if ( 27 === button ) {
|
||||
this.closeButton( e );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}( jQuery, Backbone, _ ));
|
|
@ -1 +0,0 @@
|
|||
!function(a,b,c){"use strict";a.fn.WCBackboneModal=function(b){return this.each(function(){new a.WCBackboneModal(a(this),b)})},a.WCBackboneModal=function(b,c){var d=a.extend({},a.WCBackboneModal.defaultOptions,c);d.template&&new a.WCBackboneModal.View({target:d.template,string:d.variable})},a.WCBackboneModal.defaultOptions={template:"",variable:{}},a.WCBackboneModal.View=b.View.extend({tagName:"div",id:"wc-backbone-modal-dialog",_target:void 0,_string:void 0,events:{"click .modal-close":"closeButton","click #btn-ok":"addButton","touchstart #btn-ok":"addButton",keydown:"keyboardActions"},initialize:function(a){this._target=a.target,this._string=a.string,c.bindAll(this,"render"),this.render()},render:function(){var b=wp.template(this._target);this.$el.attr("tabindex","0").append(b(this._string)),a(document.body).css({overflow:"hidden"}).append(this.$el);var c=a(".wc-backbone-modal-content").find("article"),d=c.height()<90?90:c.height(),e=a(window).height()-200;e>400&&(e=400),d>e?c.css({overflow:"auto",height:e+"px"}):c.css({overflow:"visible",height:d>90?"auto":d+"px"}),a(document.body).trigger("wc_backbone_modal_loaded",this._target)},closeButton:function(b){b.preventDefault(),a(document.body).trigger("wc_backbone_modal_before_remove",this._target),this.undelegateEvents(),a(document).off("focusin"),a(document.body).css({overflow:"auto"}),this.remove(),a(document.body).trigger("wc_backbone_modal_removed",this._target)},addButton:function(b){a(document.body).trigger("wc_backbone_modal_response",[this._target,this.getFormData()]),this.closeButton(b)},getFormData:function(){var b={};return a(document.body).trigger("wc_backbone_modal_before_update",this._target),a.each(a("form",this.$el).serializeArray(),function(c,d){b.hasOwnProperty(d.name)?(b[d.name]=a.makeArray(b[d.name]),b[d.name].push(d.value)):b[d.name]=d.value}),b},keyboardActions:function(a){var b=a.keyCode||a.which;13!==b||a.target.tagName&&("input"===a.target.tagName.toLowerCase()||"textarea"===a.target.tagName.toLowerCase())||this.addButton(a),27===b&&this.closeButton(a)}})}(jQuery,Backbone,_);
|
|
@ -208,11 +208,8 @@ class WC_Admin_Assets {
|
|||
wp_localize_script( 'wc-admin-variation-meta-boxes', 'woocommerce_admin_meta_boxes_variations', $params );
|
||||
}
|
||||
if ( in_array( str_replace( 'edit-', '', $screen_id ), wc_get_order_types( 'order-meta-boxes' ) ) ) {
|
||||
wp_register_script( 'wc-admin-order-meta-boxes', WC()->plugin_url() . '/assets/js/admin/meta-boxes-order' . $suffix . '.js', array( 'wc-admin-meta-boxes' ), WC_VERSION );
|
||||
wp_register_script( 'wc-admin-order-meta-boxes-modal', WC()->plugin_url() . '/assets/js/admin/order-backbone-modal' . $suffix . '.js', array( 'underscore', 'backbone', 'wp-util', 'wc-admin-order-meta-boxes' ), WC_VERSION );
|
||||
|
||||
wp_register_script( 'wc-admin-order-meta-boxes', WC()->plugin_url() . '/assets/js/admin/meta-boxes-order' . $suffix . '.js', array( 'wc-admin-meta-boxes', 'wc-backbone-modal' ), WC_VERSION );
|
||||
wp_enqueue_script( 'wc-admin-order-meta-boxes' );
|
||||
wp_enqueue_script( 'wc-admin-order-meta-boxes-modal' );
|
||||
|
||||
$params = array(
|
||||
'countries' => json_encode( array_merge( WC()->countries->get_allowed_country_states(), WC()->countries->get_shipping_country_states() ) ),
|
||||
|
|
Loading…
Reference in New Issue