first commit without licensingg
This commit is contained in:
337
core/theme-demos/assets/theme-demos.js
Normal file
337
core/theme-demos/assets/theme-demos.js
Normal file
@@ -0,0 +1,337 @@
|
||||
|
||||
( function( $ ) {
|
||||
"use strict";
|
||||
|
||||
/** ----------------------------------------------------------------------------
|
||||
* Theme Demos */
|
||||
|
||||
var cscoThemeDemos = {};
|
||||
|
||||
( function() {
|
||||
var $this;
|
||||
|
||||
cscoThemeDemos = {
|
||||
|
||||
/** Initialize */
|
||||
init: function( e ) {
|
||||
|
||||
$this = cscoThemeDemos;
|
||||
|
||||
// Init events.
|
||||
$this.events( e );
|
||||
},
|
||||
|
||||
/** Events */
|
||||
events: function( e ) {
|
||||
$( document ).on( 'click', '.cs-demo-import-open', function( e ) {
|
||||
$this.openImportDemo( e, this );
|
||||
});
|
||||
$( document ).on( 'click', '.cs-demo-import-close, .cs-import-overlay', function( e ) {
|
||||
$this.closeImportDemo( e, this );
|
||||
});
|
||||
$( document ).on( 'click', '.cs-demo-import-start', function( e ) {
|
||||
$this.startImportDemo( e, this );
|
||||
});
|
||||
$( document ).on( 'click', '.cs-demo-item', function( e ) {
|
||||
$this.openPreviewDemo( e, this );
|
||||
});
|
||||
$( document ).on( 'click', '.cs-prev-demo', function( e ) {
|
||||
$this.openPreviewPrevDemo( e, this );
|
||||
});
|
||||
$( document ).on( 'click', '.cs-next-demo', function( e ) {
|
||||
$this.openPreviewNextDemo( e, this );
|
||||
});
|
||||
$( document ).on( 'click', '.cs-preview-cancel a', function( e ) {
|
||||
$this.closePreviewDemo( e, this );
|
||||
});
|
||||
},
|
||||
|
||||
/** Open import demo */
|
||||
openImportDemo: function( e, object ) {
|
||||
|
||||
// Get demo id.
|
||||
var $demo_id = $( object ).data( 'id' );
|
||||
|
||||
// Body import.
|
||||
$( 'body' ).addClass( 'cs-import-theme-active' );
|
||||
|
||||
// Variables.
|
||||
var data = {
|
||||
'action': 'csco_html_import_data',
|
||||
'nonce': cscoThemeDemosConfig.nonce,
|
||||
'demo_id': $demo_id,
|
||||
};
|
||||
|
||||
// Reset current step.
|
||||
$( '.cs-import-step' ).removeClass( 'cs-import-step-active' );
|
||||
$( '.cs-import-step' ).first().addClass( 'cs-import-step-active' );
|
||||
|
||||
// Remove warning.
|
||||
$( '.cs-import-theme .cs-msg-warning' ).remove();
|
||||
|
||||
// Reset variables.
|
||||
$( '.cs-import-start .cs-import-output' ).html( '' );
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).addClass( 'cs-import-load' );
|
||||
|
||||
$( '.cs-import-process .cs-import-progress-label' ).html( '' );
|
||||
|
||||
$( '.cs-import-process .cs-import-progress-indicator' ).attr( 'style', '--cs-indicator: 0%;' );
|
||||
|
||||
$( '.cs-import-process .cs-import-progress-sublabel' ).html( '0%' );
|
||||
|
||||
// Send Request.
|
||||
$.post( cscoThemeDemosConfig.ajax_url, data, function( response ) {
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).removeClass( 'cs-import-load' );
|
||||
|
||||
if ( response.success ) {
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).html( response.data );
|
||||
|
||||
} else if ( response.data ) {
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).html( `<div class="cs-msg-warning">${response.data}</div>` );
|
||||
} else {
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).html( `<div class="cs-msg-warning">${cscoThemeDemosConfig.failed_message}</div>` );
|
||||
}
|
||||
|
||||
} ).fail( function( xhr, textStatus, e ) {
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).removeClass( 'cs-import-load' );
|
||||
|
||||
$( '.cs-import-start .cs-import-output' ).html( `<div class="cs-msg-warning">${cscoThemeDemosConfig.failed_message}</div>` );
|
||||
} );
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
/** Close import demo */
|
||||
closeImportDemo: function( e, object ) {
|
||||
|
||||
// Remove import from body.
|
||||
$( 'body' ).removeClass( 'cs-import-theme-active' );
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
/** Start import demo */
|
||||
startImportDemo: function( e, object ) {
|
||||
// Change process.
|
||||
$( '.cs-import-step' ).removeClass( 'cs-import-step-active' );
|
||||
$( '.cs-import-process' ).addClass( 'cs-import-step-active' );
|
||||
|
||||
// Run Import.
|
||||
setTimeout( function() {
|
||||
$this.importContent( e, object );
|
||||
}, 10 );
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
/** Open preview demo */
|
||||
openPreviewDemo: function( e, object ) {
|
||||
if ( ! $( e.target ).is( '.cs-demo-import-open, .cs-demo-import-url' ) ) {
|
||||
$this.openPreview( e, object );
|
||||
|
||||
e.preventDefault();
|
||||
}
|
||||
},
|
||||
|
||||
/** Open preview prev demo */
|
||||
openPreviewPrevDemo: function( e, object ) {
|
||||
|
||||
var prev = $( '.cs-demo-item-open' ).prev( '.cs-demo-item-active' );
|
||||
|
||||
if ( prev.length > 0 ) {
|
||||
$this.openPreview( e, prev );
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
/** Open preview next demo */
|
||||
openPreviewNextDemo: function( e, object ) {
|
||||
var next = $( '.cs-demo-item-open' ).next( '.cs-demo-item-active' );
|
||||
|
||||
if ( next.length > 0 ) {
|
||||
$this.openPreview( e, next );
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
/** Close preview */
|
||||
closePreviewDemo: function( e, object ) {
|
||||
// Remove current class from items.
|
||||
$( '.cs-demo-item' ).removeClass( 'cs-demo-item-open' );
|
||||
|
||||
// Remove preview from body.
|
||||
$( 'body' ).removeClass( 'cs-preview-active' );
|
||||
|
||||
// Remove url from iframe.
|
||||
$( '.cs-preview .cs-preview-iframe' ).removeAttr( 'src' );
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
/** Import indicator */
|
||||
importIndicator: function( e, object, $data ) {
|
||||
// Set indicator.
|
||||
var indicator = Math.round( 100 / $data.steps * $data.index );
|
||||
|
||||
// Change indicator.
|
||||
$( '.cs-import-process .cs-import-progress-indicator' ).attr( 'style', `--cs-indicator: ${indicator}%;` );
|
||||
$( '.cs-import-process .cs-import-progress-sublabel' ).html( `${indicator}%` );
|
||||
},
|
||||
|
||||
/** Import step */
|
||||
importStep: function( e, object, $data ) {
|
||||
|
||||
if ( ! $( 'body' ).hasClass( 'cs-import-theme-active' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Done.
|
||||
if ( $data.index >= $data.steps ) {
|
||||
// Change step.
|
||||
setTimeout(function(){
|
||||
$( '.cs-import-step' ).removeClass( 'cs-import-step-active' );
|
||||
$( '.cs-import-finish' ).addClass( 'cs-import-step-active' );
|
||||
|
||||
$( document ).trigger( 'DOMImportFinish' );
|
||||
}, 200 );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var currentAction = $( $data.forms ).eq( $data.index ).find( 'input[name="action"]').val();
|
||||
|
||||
// Set progress label.
|
||||
$( '.cs-import-progress-label' ).html( $( $data.forms ).eq( $data.index ).find( 'input[name="step_name"]').val() );
|
||||
|
||||
// Send Request.
|
||||
$.post( {
|
||||
url: cscoThemeDemosConfig.ajax_url,
|
||||
type: 'POST',
|
||||
data: $( $data.forms ).eq( $data.index ).serialize(),
|
||||
timeout: 0,
|
||||
} ).done( function( response ) {
|
||||
|
||||
if ( response.success || 'elementor_recreate_kit' === currentAction ) {
|
||||
|
||||
if ( 'undefined' !== typeof response.status && 'newAJAX' === response.status ) {
|
||||
|
||||
$this.importStep( e, object, $data );
|
||||
|
||||
} else {
|
||||
$data.index = $data.index + 1;
|
||||
|
||||
$this.importIndicator( e, object, $data );
|
||||
$this.importStep( e, object, $data );
|
||||
}
|
||||
|
||||
} else if ( response.data ) {
|
||||
|
||||
$( '.cs-import-progress' ).after( `<div class="cs-msg-warning">${response.data}</div>` );
|
||||
} else {
|
||||
|
||||
$( '.cs-import-progress' ).after( `<div class="cs-msg-warning">${cscoThemeDemosConfig.failed_message}</div>` );
|
||||
}
|
||||
|
||||
} ).fail( function( xhr, textStatus, e ) {
|
||||
|
||||
// Pre import.
|
||||
if ( 'elementor_recreate_kit' === currentAction ) {
|
||||
$data.index = $data.index + 1;
|
||||
|
||||
$this.importIndicator( e, object, $data );
|
||||
$this.importStep( e, object, $data );
|
||||
} else {
|
||||
$( '.cs-import-progress' ).after( `<div class="cs-msg-warning">${cscoThemeDemosConfig.failed_message}</div>` );
|
||||
}
|
||||
|
||||
} );
|
||||
},
|
||||
|
||||
/** Import content */
|
||||
importContent: function( e, object ) {
|
||||
var forms = $( '.cs-import-start form' ).filter(function( index, element ){
|
||||
if ( $( element ).find( '.cs-checkbox' ).prop( 'checked' ) ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var steps = forms.length;
|
||||
|
||||
if ( steps <= 0 ) {
|
||||
return
|
||||
}
|
||||
|
||||
$this.importStep( e, object, {
|
||||
'forms': forms,
|
||||
'steps': steps,
|
||||
'index': 0
|
||||
} );
|
||||
},
|
||||
|
||||
/** Open preview */
|
||||
openPreview: function( e, object ) {
|
||||
let demo_id = $( object ).data( 'id' );
|
||||
let preview = $( object ).data( 'preview' );
|
||||
let name = $( object ).data( 'name' );
|
||||
let type = $( object ).data( 'type' );
|
||||
|
||||
if ( 'false' === preview ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove current class from siblings items.
|
||||
$( object ).siblings().removeClass( 'cs-demo-item-open' );
|
||||
|
||||
// Current item.
|
||||
$( object ).addClass( 'cs-demo-item-open' );
|
||||
|
||||
// Set demo id.
|
||||
$( '.cs-preview .cs-demo-import-open' ).attr( 'data-id', demo_id );
|
||||
|
||||
// Prev Next Buttons.
|
||||
$( '.cs-preview' ).find( '.cs-prev-demo, .cs-next-demo' ).removeClass( 'cs-inactive' );
|
||||
|
||||
let prev = $( object ).prev( '.cs-demo-item-active' );
|
||||
if ( prev.length <= 0 ) {
|
||||
$( '.cs-preview .cs-prev-demo' ).addClass( 'cs-inactive' );
|
||||
}
|
||||
|
||||
let next = $( object ).next( '.cs-demo-item-active' );
|
||||
if ( next.length <= 0 ) {
|
||||
$( '.cs-preview .cs-next-demo' ).addClass( 'cs-inactive' );
|
||||
}
|
||||
|
||||
// Reset header info.
|
||||
$( '.cs-preview .cs-header-info' ).html( '' );
|
||||
|
||||
// Add name to info.
|
||||
if ( name ) {
|
||||
$( '.cs-preview .cs-header-info' ).prepend( `<div class="cs-demo-name">${name}</div>` );
|
||||
}
|
||||
|
||||
$( '.cs-preview .cs-preview-actions' ).html( $( object ).find( '.cs-demo-actions' ).html() );
|
||||
|
||||
// Set url in iframe.
|
||||
$( '.cs-preview .cs-preview-iframe' ).attr( 'src', preview );
|
||||
|
||||
// Body preview.
|
||||
$( 'body' ).addClass( 'cs-preview-active' );
|
||||
},
|
||||
};
|
||||
|
||||
} )();
|
||||
|
||||
// Initialize.
|
||||
cscoThemeDemos.init();
|
||||
|
||||
} )( jQuery );
|
||||
Reference in New Issue
Block a user