fl-builder-export.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. ( function( $ ) {
  2. /**
  3. * @since 1.8
  4. * @class FLBuilderExport
  5. */
  6. FLBuilderExport = {
  7. /**
  8. * Initializes custom exports for the builder.
  9. *
  10. * @since 1.8
  11. * @access private
  12. * @method _init
  13. */
  14. _init: function()
  15. {
  16. $( '#export-filters input[value=fl-builder-template]' ).on( 'change', FLBuilderExport._showTemplateFilters );
  17. $( '#export-filters input[value=fl-theme-layout]' ).on( 'change', FLBuilderExport._showTemplateFilters );
  18. $( '#fl-builder-template-export-select' ).on( 'change', FLBuilderExport._templateSelectChange );
  19. },
  20. /**
  21. * Shows the template filters when the template radio
  22. * button is clicked.
  23. *
  24. * @since 1.8
  25. * @access private
  26. * @method _showTemplateFilters
  27. */
  28. _showTemplateFilters: function()
  29. {
  30. var filters = $( '#fl-builder-template-filters' );
  31. filters.find( 'select' ).val( 'all' );
  32. $( this ).closest( 'p' ).after( filters );
  33. $( '#fl-builder-template-export-posts' ).hide();
  34. filters.slideDown();
  35. },
  36. /**
  37. * Called when the template select is changed and shows
  38. * all templates to select from when the value is set
  39. * to selected.
  40. *
  41. * @since 1.8
  42. * @access private
  43. * @method _templateSelectChange
  44. */
  45. _templateSelectChange: function()
  46. {
  47. var filter = $( '#fl-builder-template-filters' ),
  48. posts = $( '#fl-builder-template-export-posts' ),
  49. spinner = filter.find( '.spinner' );
  50. if ( 'all' == $( this ).val() ) {
  51. spinner.removeClass( 'is-active' );
  52. posts.hide();
  53. }
  54. else {
  55. posts.empty();
  56. posts.show();
  57. spinner.addClass( 'is-active' );
  58. $.post( ajaxurl, {
  59. action: 'fl_builder_export_templates_data',
  60. type: $( 'input[name=content]:checked' ).val(),
  61. _wpnonce: window.fl_builder_export_nonce.nonce
  62. }, FLBuilderExport._templateDataLoaded );
  63. }
  64. },
  65. /**
  66. * Called when the template data is loaded.
  67. *
  68. * @since 1.8
  69. * @access private
  70. * @method _templateDataLoaded
  71. */
  72. _templateDataLoaded: function( response )
  73. {
  74. var filter = $( '#fl-builder-template-filters' ),
  75. posts = $( '#fl-builder-template-export-posts' ),
  76. spinner = filter.find( '.spinner' ),
  77. data = JSON.parse( response ),
  78. i = 0;
  79. for ( i in data ) {
  80. posts.append( '<p><label><input type="checkbox" name="fl-builder-export-template[]" value="' + data[ i ].id + '" /> ' + data[ i ].title + '</label></p>' );
  81. }
  82. spinner.removeClass( 'is-active' );
  83. }
  84. };
  85. $( FLBuilderExport._init );
  86. } )( jQuery );