/** * Migrator JS FIle * * This file contains all settings related to exporting and importing Layers Pages. * * @package Layers * @since Layers 1.0.0 * * Contents * 1 - Select a Layout Step * 2 - Cancel & Close Modal * 3 - Final Importer Step * 4 - Import Page Button in Page Edit Screen * * Author: Obox Themes * Author URI: http://www.oboxthemes.com/ * License: GNU General Public License v2 or later * License URI: http://www.gnu.org/licenses/gpl-2.0.html */ jQuery(document).ready(function($){ var $title, $widget_data; /** * 1 - Select a Layout Step, Sets global vars for use in the import phase */ $(document).on( 'click', '.layers_page_layers-add-new-page .l_admin-product', function(e){ e.preventDefault(); $button = $(this).find('[id^="layers-generate-preset-layout-"]'); $id = $button.data( 'key' ); $title = $('#' + $id + '-title' ).val(); $widget_data = $('#' + $id + '-widget_data' ).val(); // Show the Modal $( '.l_admin-modal-container' ).find( '.l_admin-media-image' ).html( $button.find('img') ); $( '.l_admin-modal-container' ).hide().removeClass( 'l_admin-hide' ).fadeIn( 350 ); $( '#adminmenu' ).fadeOut(); }); $(document).on( 'keyup', '#layers_preset_page_title', function(e){ if( '' == $(this).val() ){ $( '#layers-preset-proceed' ).attr( 'disabled', 'disabled' ); } else { $( '#layers-preset-proceed' ).removeAttr( 'disabled' ); } }); /** * 2 - Cancel And Close Modal */ $(document).on( 'click', '#layers-preset-layout-next-button a#layers-preset-cancel', function(e){ e.preventDefault(); // "Hi Mom!" $that = $(this); $( '.l_admin-modal-container' ).fadeOut(); $( '#adminmenu' ).fadeIn(); }); /** * 3 - Final Preset Layout - Shows loading bar, when complete sends us to the customizer */ $(document).on( 'click', '#layers-preset-layout-next-button a#layers-preset-proceed', function(e){ e.preventDefault(); // "Hi Mom!" $that = $(this); $( '.l_admin-load-bar' ).hide().removeClass( 'l_admin-hide' ).fadeIn( 750 ); $( '#layers-preset-layout-next-button' ).addClass( 'l_admin-hide' ); $( '.l_admin-progress' ).removeClass( 'zero complete' ).css('width' , 0); var $load_bar_percent = 0; $( '.l_admin-progress' ).animate( {width: "100%"}, 4500 ); var $page_data = { action: 'layers_create_builder_page_from_preset', post_title: $( '#layers_preset_page_title' ).val(), preset_nonce: layers_migrator_params.preset_layout_nonce, widget_data: $.parseJSON( $widget_data ), }; jQuery.post( ajaxurl, $page_data, function(data){ $results = $.parseJSON( data ); $( '.l_admin-progress' ).stop().animate({width: "100%"} , 500 , function(e){ window.location.assign( $results.customizer_location ); }); } ); }); /** * 4 - Import Page Button in Page Edit Screen */ var file_frame; $(document).on( 'click', '#layers-page-import-button' , function(e){ e.preventDefault(); // "Hi Mom!" $that = $(this); // If the media frame already exists, reopen it. if ( file_frame ) { file_frame.close(); } // Create the media frame. file_frame = wp.media.frames.file_frame = wp.media({ title: $that.data( 'title' ), button: { text: $that.data( 'button_text' ), }, multiple: false // Set to true to allow multiple files to be selected }); // When an image is selected, run a callback. file_frame.on( 'select', function() { // We set multiple to false so only get one image from the uploader attachment = file_frame.state().get('selection').first().toJSON(); // Read the file JSON $.getJSON( attachment.url, function( import_data ){ jQuery( '#layers-page-import-button' ).text( migratori18n.importing_message ).addClass( 'btn-link' ); // Set the attributes to send to the importer var $page_data = { action: 'layers_import_widgets', post_id: $that.data('post-id'), import_nonce: layers_migrator_params.import_layout_nonce, widget_data: import_data, }; $.post( ajaxurl, $page_data, function(data){ // Upon completion update the import button jQuery( '#layers-page-import-button' ).fadeOut( 500, function() { jQuery(this).text( migratori18n.complete_message ).fadeIn().attr('disabled','disabled'); } ).closest( '.l_admin-column' ).addClass( 'l_admin-success' ); } ); }); return; }); // Finally, open the modal file_frame.open(); return false; }); /** * 5 - Duplicate Page Button in Page Edit Screen */ var file_frame; $(document).on( 'click', '#layers-page-duplicate-button' , function(e){ e.preventDefault(); // "Hi Mom!" $that = $(this); // Set the attributes to send to the importer var $page_data = { action: 'layers_duplicate_builder_page', post_id: $that.data('post-id'), post_title: $('#title').val(), duplicate_nonce: layers_migrator_params.duplicate_layout_nonce }; $.post( ajaxurl, $page_data, function(data){ $results = $.parseJSON( data ); $a = $('').attr('class' , 'layers-button btn-link' ).attr( 'href' , $results.page_location ).text( migratori18n.duplicate_complete_message ); jQuery( '#layers-page-duplicate-button' ).closest( '.l_admin-column' ).addClass( 'l_admin-success' ); jQuery( '#layers-page-duplicate-button' ).replaceWith( $a ); } ); }); });