暫無描述

post-by-email.js 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /* global jetpack_post_by_email:true, pbeVars */
  2. ( function ( $ ) {
  3. var $pbeDisable,
  4. $pbeEmail,
  5. $pbeEmailWrapper,
  6. $pbeEnable,
  7. $pbeError,
  8. $pbeInfo,
  9. $pbeRegenerate,
  10. $pbeSpinner;
  11. jetpack_post_by_email = {
  12. init: function () {
  13. $pbeEnable.click( jetpack_post_by_email.enable );
  14. $pbeRegenerate.click( jetpack_post_by_email.regenerate );
  15. $pbeDisable.click( jetpack_post_by_email.disable );
  16. },
  17. enable: function () {
  18. $pbeEnable.attr( 'disabled', 'disabled' );
  19. $pbeError.fadeOut();
  20. $pbeSpinner.fadeIn();
  21. jetpack_post_by_email.send_request(
  22. { post_by_email_address: 'create' },
  23. jetpack_post_by_email.handle_enabled
  24. );
  25. },
  26. handle_enabled: function ( response ) {
  27. $pbeRegenerate.removeAttr( 'disabled' );
  28. $pbeDisable.removeAttr( 'disabled' );
  29. if ( response.code === 'success' ) {
  30. $pbeEnable.fadeOut( 400, function () {
  31. $pbeEnable.removeAttr( 'disabled' );
  32. $pbeEmail.val( response.post_by_email_address );
  33. $pbeInfo.fadeIn();
  34. } );
  35. } else {
  36. $pbeError.text( jetpack_post_by_email.parse_error_message( response ) );
  37. $pbeError.fadeIn();
  38. $pbeEnable.removeAttr( 'disabled' );
  39. }
  40. $pbeSpinner.fadeOut();
  41. },
  42. regenerate: function () {
  43. jetpack_post_by_email.before_request();
  44. jetpack_post_by_email.send_request(
  45. { post_by_email_address: 'regenerate' },
  46. jetpack_post_by_email.handle_regenerated
  47. );
  48. },
  49. handle_regenerated: function ( response ) {
  50. if ( response.code === 'success' ) {
  51. $pbeEmailWrapper.fadeOut( 400, function () {
  52. $pbeEmail.val( response.post_by_email_address );
  53. $pbeEmailWrapper.fadeIn();
  54. } );
  55. } else {
  56. $pbeError.text( jetpack_post_by_email.parse_error_message( response ) );
  57. $pbeError.fadeIn();
  58. }
  59. $pbeRegenerate.removeAttr( 'disabled' );
  60. $pbeDisable.removeAttr( 'disabled' );
  61. $pbeSpinner.fadeOut();
  62. },
  63. disable: function () {
  64. jetpack_post_by_email.before_request();
  65. jetpack_post_by_email.send_request(
  66. { post_by_email_address: 'delete' },
  67. jetpack_post_by_email.handle_disabled
  68. );
  69. },
  70. handle_disabled: function ( response ) {
  71. if ( response.code === 'success' ) {
  72. $pbeEnable.removeAttr( 'disabled' );
  73. $pbeInfo.fadeOut( 400, function () {
  74. $pbeRegenerate.removeAttr( 'disabled' );
  75. $pbeDisable.removeAttr( 'disabled' );
  76. $pbeEnable.fadeIn();
  77. } );
  78. } else {
  79. $pbeRegenerate.removeAttr( 'disabled' );
  80. $pbeDisable.removeAttr( 'disabled' );
  81. $pbeError.text( jetpack_post_by_email.parse_error_message( response ) );
  82. $pbeError.fadeIn();
  83. }
  84. $pbeSpinner.fadeOut();
  85. },
  86. send_request: function ( data, callback ) {
  87. var request = new XMLHttpRequest();
  88. request.open( 'POST', '/wp-json/jetpack/v4/settings/' );
  89. request.setRequestHeader( 'Content-Type', 'application/json' );
  90. request.setRequestHeader( 'X-WP-Nonce', pbeVars.rest_nonce );
  91. request.onreadystatechange = function () {
  92. if ( this.readyState === XMLHttpRequest.DONE ) {
  93. callback( JSON.parse( this.response ) );
  94. }
  95. };
  96. request.send( JSON.stringify( data ) );
  97. },
  98. parse_error_message: function ( data ) {
  99. if ( data.message ) {
  100. return data.message.replace( /^.*?:/, '' );
  101. }
  102. return '';
  103. },
  104. before_request: function () {
  105. $pbeRegenerate.attr( 'disabled', 'disabled' );
  106. $pbeDisable.attr( 'disabled', 'disabled' );
  107. $pbeError.fadeOut();
  108. $pbeSpinner.fadeIn();
  109. },
  110. };
  111. $( function () {
  112. $pbeDisable = $( '#jp-pbe-disable' );
  113. $pbeEmail = $( '#jp-pbe-email' );
  114. $pbeEmailWrapper = $( '#jp-pbe-email-wrapper' );
  115. $pbeEnable = $( '#jp-pbe-enable' );
  116. $pbeError = $( '#jp-pbe-error' );
  117. $pbeInfo = $( '#jp-pbe-info' );
  118. $pbeRegenerate = $( '#jp-pbe-regenerate' );
  119. $pbeSpinner = $( '#jp-pbe-spinner' );
  120. jetpack_post_by_email.init();
  121. } );
  122. } )( jQuery );