geno/wp-content/plugins/astra-sites/inc/assets/js/common.js

338 lines
12 KiB
JavaScript
Raw Permalink Normal View History

2024-02-01 17:24:18 +05:30
(function($){
$scope = {};
AstraImageCommon = {
images: {},
image: {},
action: '',
offset: 0,
loadingStatus: true,
config: {
q : '',
lang : 'en',
image_type : 'all',
orientation : 'all',
category : '',
min_width : 0,
min_height : 0,
colors : '',
editors_choice : false,
safesearch : true,
order : 'popular',
page : $( 'body' ).data( 'page' ),
per_page : 30,
callback : '',
pretty : true
},
canSave: false,
infiniteLoad: false,
uploader: {},
file: {},
frame: {},
isPreview: false,
apiStatus: true,
id : '',
isValidating: false,
scopeSet: false,
init: function() {
this._bind();
},
/**
* Binds events for the Astra Sites.
*
* @since 1.0.0
* @access private
* @method _bind
*/
_bind: function() {
// Triggers.
$( document ).on( "ast-image__refresh", AstraImageCommon._initImages );
$( document ).on( "ast-image__set-scope", AstraImageCommon._setScope );
$( document ).on( "click", ".ast-image__list-img-overlay", AstraImageCommon._preview );
$( document ).on( "click", ".ast-image__go-back-text", AstraImageCommon._goBack );
$( document ).on( "click", ".ast-image__save", AstraImageCommon._save );
$( document ).on( "click", ".ast-image__filter-safesearch input", AstraImageCommon._filter );
$( document ).on( "change", ".ast-image__filter select", AstraImageCommon._filter );
$( document ).on( "click", ".ast-image__edit-api", AstraImageCommon._editAPI );
$( document ).on( "click", ".ast-image__browse-images", AstraImageCommon._browse );
$( document ).on( "click", ".ast-image__download-icon", AstraImageCommon._saveFromScreen );
},
_saveFromScreen: function() {
let saveIcon = $(this);
let source = saveIcon.closest('.ast-image__list-img-overlay');
saveIcon.addClass( 'installing' );
AstraImageCommon.image = {
'largeImageURL': source.data( 'img-url' ),
'tags' : source.find( 'span:first-child' ).html(),
'id' : source.data( 'img-id' ),
};
AstraImageCommon._saveAjax( function ( data ) {
if ( undefined == data.data ) {
return;
}
astraImages.saved_images = data.data['updated-saved-images'];
wp.media.view.AstraAttachmentsBrowser.object.photoUploadComplete( data.data );
saveIcon.text( 'Done' );
saveIcon.removeClass( 'installing' );
AstraImageCommon._empty();
} );
},
_browse: function() {
$scope.find( '.ast-image__search' ).trigger( 'keyup' );
},
_editAPI: function( event ) {
event.stopPropagation();
wp.media.view.AstraAttachmentsBrowser.images = [];
$scope.find( '.ast-image__loader-wrap' ).show();
$scope.find( '.ast-image__skeleton' ).html( '' );
$scope.find( '.ast-image__skeleton' ).attr( 'style', '' );
$scope.find( '.ast-image__search' ).trigger( 'keyup' );
$scope.find( '.ast-image__loader-wrap' ).hide();
},
_filter: function() {
let safesearch = $scope.find( '.ast-image__filter-safesearch input:checked' ).length ? true : false;
let category = $scope.find( '.ast-image__filter-category select' ).val();
let orientation = $scope.find( '.ast-image__filter-orientation select' ).val();
let order = $scope.find( '.ast-image__filter-order select' ).val();
AstraImageCommon.config.safesearch = safesearch;
AstraImageCommon.config.orientation = orientation;
AstraImageCommon.config.category = category;
AstraImageCommon.config.order = order;
$scope.find( '.ast-image__search' ).trigger( 'keyup' );
$scope.find( '.ast-image__loader-wrap' ).show();
},
_save: function() {
if ( ! AstraImageCommon.canSave ) {
return;
}
let thisBtn = $( this )
if ( thisBtn.data( 'import-status' ) ) {
return;
}
thisBtn.removeClass( 'updating-message' );
thisBtn.text( astraImages.downloading );
thisBtn.addClass( 'installing' );
AstraImageCommon.canSave = false;
AstraImageCommon._saveAjax( function ( data ) {
if ( undefined == data.data ) {
return;
}
astraImages.saved_images = data.data['updated-saved-images'];
wp.media.view.AstraAttachmentsBrowser.object.photoUploadComplete( data.data );
thisBtn.text( 'Done' );
thisBtn.removeClass( 'installing' );
AstraImageCommon._empty();
} );
},
_saveAjax: function( callback ) {
// Work with JSON page here
$.ajax({
url: astraImages.ajaxurl,
type: 'POST',
dataType: 'json',
data: {
'action' : 'astra-sites-create-image',
'url' : AstraImageCommon.image.largeImageURL,
'name' : AstraImageCommon.image.tags,
'id' : AstraImageCommon.image.id,
'_ajax_nonce' : astraImages._ajax_nonce,
},
})
.fail(function( jqXHR ){
console.log( jqXHR );
})
.done( callback );
},
_empty: function() {
AstraImageCommon.image = {};
AstraImageCommon.canSave = false;
AstraImageCommon.uploader = {};
AstraImageCommon.file = {};
AstraImageCommon.isPreview = false;
},
_goBack: function() {
AstraImageCommon._empty();
$( document ).trigger( 'ast-image__refresh' );
$scope.find( '.ast-image__skeleton' ).show();
$scope.removeClass( 'preview-mode' );
$scope.find( '.ast-attachments-search-wrap' ).children().show();
$scope.find( '.ast-image__go-back' ).remove();
$scope.find( '.ast-image__save-wrap' ).remove();
$scope.find( '.ast-image__preview-skeleton' ).hide();
$scope.find( '.ast-image__preview-skeleton' ).html( '' );
let wrapHeight = ( AstraImageCommon.offset - 210 );
$scope.find( '.ast-image__skeleton-inner-wrap' ).css( 'height', wrapHeight );
},
_preview: function(event) {
if( event && event.target.classList.contains( 'ast-image__download-icon' ) ) {
return;
}
AstraImageCommon.isPreview = true;
let height = ( AstraImageCommon.offset - 190 );
$scope.find( '.ast-image__skeleton-inner-wrap' ).css( 'height', height );
setTimeout( function() {
$scope.find( '.ast-image__loader-wrap' ).hide();
}, 200 );
AstraImageCommon.image = {
'largeImageURL': $( this ).data( 'img-url' ),
'tags' : $( this ).find( 'span:first-child' ).html(),
'id' : $( this ).data( 'img-id' ),
};
let preview = wp.template( 'ast-image-single' );
let single_html = preview( AstraImageCommon.image );
let save_btn = wp.template( 'ast-image-save' );
let single_btn = save_btn( AstraImageCommon.image );
let wrapHeight = $scope.find( '.ast-image__skeleton-inner-wrap' ).outerHeight();
wrapHeight = ( wrapHeight - 60 );
$scope.find( '.ast-image__skeleton' ).hide();
$scope.addClass( 'preview-mode' );
$scope.find( '.ast-attachments-search-wrap' ).children().hide();
$scope.find( '.ast-image__search-wrap' ).before( $( '#tmpl-ast-image-go-back' ).text() );
$scope.find( '.ast-image__search-wrap' ).after( single_btn );
$scope.find( '.ast-image__preview-skeleton' ).html( single_html );
$scope.find( '.ast-image__preview-skeleton' ).show();
$scope.find( '.single-site-preview' ).css( 'max-height', wrapHeight );
AstraImageCommon.canSave = true;
},
_setScope: function() {
AstraImageCommon.frame = wp.media.view.AstraAttachmentsBrowser.object.$el.closest( '.media-frame' );
$scope = AstraImageCommon.frame.find( '.ast-attachments-browser' );
if ( undefined == $scope ) {
return;
}
$( 'body' ).data( 'page', 1 );
let skeleton = $( '#tmpl-ast-image-skeleton' ).text();
$scope.append( skeleton );
let pixabay_filter = wp.template( 'ast-image-filters' );
if ( ! $scope.find( '.ast-image__filter-wrap' ).length ) {
$scope.find( '.ast-attachments-search-wrap' ).append( pixabay_filter() );
}
AstraImageCommon.offset = AstraImageCommon.frame.outerHeight();
let wrapHeight = ( AstraImageCommon.offset - 210 );
$scope.find( '.ast-image__skeleton-inner-wrap' ).css( 'height', wrapHeight );
$scope.find( '.ast-image__search' ).trigger( 'keyup' );
$scope.find( '.ast-image__loader-wrap' ).show();
$scope.find( '.ast-image__skeleton-inner-wrap' ).scroll( AstraImageCommon._loadMore );
AstraImageCommon.scopeSet = true;
},
_initImages: function() {
let loop = wp.template( 'ast-image-list' );
let list_html = loop( wp.media.view.AstraAttachmentsBrowser.images );
let container = document.querySelector( '.ast-image__skeleton' );
$scope.find( '.ast-image__loader-wrap' ).show();
if ( AstraImageCommon.infiniteLoad ) {
AstraImageCommon.images.push( wp.media.view.AstraAttachmentsBrowser.images );
$scope.find( '.ast-image__skeleton' ).append( list_html );
} else {
AstraImageCommon.images = wp.media.view.AstraAttachmentsBrowser.images;
$scope.find( '.ast-image__skeleton' ).html( list_html );
}
AstraImageCommon.loadingStatus = true;
if ( $scope.find( '.ast-image__list-wrap' ).length ) {
imagesLoaded( container, function() {
$scope.find( '.ast-image__list-wrap' ).each( function( index ) {
$( this ).removeClass( 'loading' );
$( this ).addClass( 'loaded' );
} );
$scope.find( '.ast-image__loader-wrap' ).hide();
});
} else {
$scope.find( '.ast-image__loader-wrap' ).hide();
}
},
_loadMore: function() {
if( AstraImageCommon.isPreview ) {
return;
}
let page = $( 'body' ).data( 'page' );
page = ( undefined == page ) ? 2 : ( page + 1 );
if ( undefined != $scope.find( '.ast-image__list-wrap:last' ).offset() ) {
if( ( $( window ).scrollTop() + AstraImageCommon.offset ) >= ( $scope.find( '.ast-image__list-wrap:last' ).offset().top ) ) {
if ( AstraImageCommon.loadingStatus ) {
$scope.find( '.ast-image__loader-wrap' ).show();
AstraImageCommon.loadingStatus = false;
AstraImageCommon.infiniteLoad = true;
AstraImageCommon.config.page = page;
$( 'body' ).data( 'page', page );
$scope.find( '.ast-image__search' ).trigger( 'infinite' );
}
}
}
},
};
/**
* Initialize AstraImageCommon
*/
$( function(){
AstraImageCommon.init();
});
})(jQuery);