api-keys.js
5 years ago
api-keys.min.js
5 years ago
backbone-modal.js
5 years ago
backbone-modal.min.js
5 years ago
marketplace-suggestions.js
4 years ago
marketplace-suggestions.min.js
3 years ago
meta-boxes-coupon.js
5 years ago
meta-boxes-coupon.min.js
3 years ago
meta-boxes-order.js
3 years ago
meta-boxes-order.min.js
3 years ago
meta-boxes-product-variation.js
3 years ago
meta-boxes-product-variation.min.js
3 years ago
meta-boxes-product.js
3 years ago
meta-boxes-product.min.js
3 years ago
meta-boxes.js
3 years ago
meta-boxes.min.js
3 years ago
network-orders.js
8 years ago
network-orders.min.js
3 years ago
product-editor.js
3 years ago
product-editor.min.js
3 years ago
product-ordering.js
3 years ago
product-ordering.min.js
3 years ago
quick-edit.js
4 years ago
quick-edit.min.js
3 years ago
reports.js
5 years ago
reports.min.js
3 years ago
settings-views-html-settings-tax.js
5 years ago
settings-views-html-settings-tax.min.js
3 years ago
settings.js
4 years ago
settings.min.js
3 years ago
system-status.js
3 years ago
system-status.min.js
3 years ago
term-ordering.js
3 years ago
term-ordering.min.js
3 years ago
users.js
5 years ago
users.min.js
3 years ago
wc-clipboard.js
5 years ago
wc-clipboard.min.js
5 years ago
wc-enhanced-select.js
3 years ago
wc-enhanced-select.min.js
3 years ago
wc-orders.js
3 years ago
wc-orders.min.js
3 years ago
wc-product-export.js
5 years ago
wc-product-export.min.js
5 years ago
wc-product-import.js
3 years ago
wc-product-import.min.js
3 years ago
wc-setup.js
5 years ago
wc-setup.min.js
3 years ago
wc-shipping-classes.js
5 years ago
wc-shipping-classes.min.js
3 years ago
wc-shipping-zone-methods.js
4 years ago
wc-shipping-zone-methods.min.js
3 years ago
wc-shipping-zones.js
4 years ago
wc-shipping-zones.min.js
3 years ago
wc-status-widget.js
4 years ago
wc-status-widget.min.js
4 years ago
woocommerce_admin.js
3 years ago
woocommerce_admin.min.js
3 years ago
api-keys.js
159 lines
| 1 | /*global jQuery, Backbone, _, woocommerce_admin_api_keys, wcSetClipboard, wcClearClipboard */ |
| 2 | (function( $ ) { |
| 3 | |
| 4 | var APIView = Backbone.View.extend({ |
| 5 | /** |
| 6 | * Element |
| 7 | * |
| 8 | * @param {Object} '#key-fields' |
| 9 | */ |
| 10 | el: $( '#key-fields' ), |
| 11 | |
| 12 | /** |
| 13 | * Events |
| 14 | * |
| 15 | * @type {Object} |
| 16 | */ |
| 17 | events: { |
| 18 | 'click input#update_api_key': 'saveKey' |
| 19 | }, |
| 20 | |
| 21 | /** |
| 22 | * Initialize actions |
| 23 | */ |
| 24 | initialize: function(){ |
| 25 | _.bindAll( this, 'saveKey' ); |
| 26 | }, |
| 27 | |
| 28 | /** |
| 29 | * Init jQuery.BlockUI |
| 30 | */ |
| 31 | block: function() { |
| 32 | $( this.el ).block({ |
| 33 | message: null, |
| 34 | overlayCSS: { |
| 35 | background: '#fff', |
| 36 | opacity: 0.6 |
| 37 | } |
| 38 | }); |
| 39 | }, |
| 40 | |
| 41 | /** |
| 42 | * Remove jQuery.BlockUI |
| 43 | */ |
| 44 | unblock: function() { |
| 45 | $( this.el ).unblock(); |
| 46 | }, |
| 47 | |
| 48 | /** |
| 49 | * Init TipTip |
| 50 | */ |
| 51 | initTipTip: function( css_class ) { |
| 52 | $( document.body ) |
| 53 | .on( 'click', css_class, function( evt ) { |
| 54 | evt.preventDefault(); |
| 55 | if ( ! document.queryCommandSupported( 'copy' ) ) { |
| 56 | $( css_class ).parent().find( 'input' ).trigger( 'focus' ).trigger( 'select' ); |
| 57 | $( '#copy-error' ).text( woocommerce_admin_api_keys.clipboard_failed ); |
| 58 | } else { |
| 59 | $( '#copy-error' ).text( '' ); |
| 60 | wcClearClipboard(); |
| 61 | wcSetClipboard( $( this ).prev( 'input' ).val().trim(), $( css_class ) ); |
| 62 | } |
| 63 | } ) |
| 64 | .on( 'aftercopy', css_class, function() { |
| 65 | $( '#copy-error' ).text( '' ); |
| 66 | $( css_class ).tipTip( { |
| 67 | 'attribute': 'data-tip', |
| 68 | 'activation': 'focus', |
| 69 | 'fadeIn': 50, |
| 70 | 'fadeOut': 50, |
| 71 | 'delay': 0 |
| 72 | } ).trigger( 'focus' ); |
| 73 | } ) |
| 74 | .on( 'aftercopyerror', css_class, function() { |
| 75 | $( css_class ).parent().find( 'input' ).trigger( 'focus' ).trigger( 'select' ); |
| 76 | $( '#copy-error' ).text( woocommerce_admin_api_keys.clipboard_failed ); |
| 77 | } ); |
| 78 | }, |
| 79 | |
| 80 | /** |
| 81 | * Create qrcode |
| 82 | * |
| 83 | * @param {string} consumer_key |
| 84 | * @param {string} consumer_secret |
| 85 | */ |
| 86 | createQRCode: function( consumer_key, consumer_secret ) { |
| 87 | $( '#keys-qrcode' ).qrcode({ |
| 88 | text: consumer_key + '|' + consumer_secret, |
| 89 | width: 120, |
| 90 | height: 120 |
| 91 | }); |
| 92 | }, |
| 93 | |
| 94 | /** |
| 95 | * Save API Key using ajax |
| 96 | * |
| 97 | * @param {Object} e |
| 98 | */ |
| 99 | saveKey: function( e ) { |
| 100 | e.preventDefault(); |
| 101 | |
| 102 | var self = this; |
| 103 | |
| 104 | self.block(); |
| 105 | |
| 106 | Backbone.ajax({ |
| 107 | method: 'POST', |
| 108 | dataType: 'json', |
| 109 | url: woocommerce_admin_api_keys.ajax_url, |
| 110 | data: { |
| 111 | action: 'woocommerce_update_api_key', |
| 112 | security: woocommerce_admin_api_keys.update_api_nonce, |
| 113 | key_id: $( '#key_id', self.el ).val(), |
| 114 | description: $( '#key_description', self.el ).val(), |
| 115 | user: $( '#key_user', self.el ).val(), |
| 116 | permissions: $( '#key_permissions', self.el ).val() |
| 117 | }, |
| 118 | success: function( response ) { |
| 119 | $( '.wc-api-message', self.el ).remove(); |
| 120 | |
| 121 | if ( response.success ) { |
| 122 | var data = response.data; |
| 123 | |
| 124 | $( 'h2, h3', self.el ).first().append( '<div class="wc-api-message updated"><p>' + data.message + '</p></div>' ); |
| 125 | |
| 126 | if ( 0 < data.consumer_key.length && 0 < data.consumer_secret.length ) { |
| 127 | $( '#api-keys-options', self.el ).remove(); |
| 128 | $( 'p.submit', self.el ).empty().append( data.revoke_url ); |
| 129 | |
| 130 | var template = wp.template( 'api-keys-template' ); |
| 131 | |
| 132 | $( 'p.submit', self.el ).before( template({ |
| 133 | consumer_key: data.consumer_key, |
| 134 | consumer_secret: data.consumer_secret |
| 135 | }) ); |
| 136 | self.createQRCode( data.consumer_key, data.consumer_secret ); |
| 137 | self.initTipTip( '.copy-key' ); |
| 138 | self.initTipTip( '.copy-secret' ); |
| 139 | } else { |
| 140 | $( '#key_description', self.el ).val( data.description ); |
| 141 | $( '#key_user', self.el ).val( data.user_id ); |
| 142 | $( '#key_permissions', self.el ).val( data.permissions ); |
| 143 | } |
| 144 | } else { |
| 145 | $( 'h2, h3', self.el ) |
| 146 | .first() |
| 147 | .append( '<div class="wc-api-message error"><p>' + response.data.message + '</p></div>' ); |
| 148 | } |
| 149 | |
| 150 | self.unblock(); |
| 151 | } |
| 152 | }); |
| 153 | } |
| 154 | }); |
| 155 | |
| 156 | new APIView(); |
| 157 | |
| 158 | })( jQuery ); |
| 159 |