2026-02-05 17:08:59 +03:00

155 lines
4.0 KiB
JavaScript

/* global FusionApp, fusionAppConfig, FusionEvents */
/* eslint no-empty-function: 0 */
var FusionPageBuilder = FusionPageBuilder || {};
( function() {
jQuery( document ).ready( function() {
// Builder Preferences.
FusionPageBuilder.PreferencesView = window.wp.Backbone.View.extend( {
template: FusionPageBuilder.template( jQuery( '#fusion-builder-front-end-preferences' ).html() ),
events: {
'click .fusion-panel-description': 'showHideDescription',
'change .button-set-value': 'optionChanged'
},
/**
* Init.
*
* @since 2.0.0
* @return {void}
*/
initialize: function() {
},
/**
* Renders the view.
*
* @since 2.0.0
* @return {Object} this
*/
render: function() {
var self = this;
this.$el.html( this.template() );
this.$el = this.$el.dialog( {
title: 'Preferences',
width: 600,
height: FusionApp.dialog.dialogHeight,
draggable: false,
resizable: false,
modal: true,
dialogClass: 'fusion-builder-dialog fusion-builder-settings-dialog fusion-builder-preferences-dialog',
open: function( event ) {
var dialogContent = jQuery( event.target );
FusionPageBuilder.options.radioButtonSet.optionRadioButtonSet( dialogContent );
FusionApp.dialog.resizeDialog();
},
close: function() {
self.saveChanges();
}
} ).closest( '.ui-dialog' );
return this;
},
/**
* Trigger live-update when an option changes.
*
* @since 2.0.0
* @return {void}
*/
optionChanged: function() {
var $preferences = {},
preferencesChanged = [],
i;
this.$el.find( 'input' ).each( function() {
$preferences[ jQuery( this ).attr( 'id' ) ] = jQuery( this ).val();
if ( $preferences[ jQuery( this ).attr( 'id' ) ] !== FusionApp.preferencesData[ jQuery( this ).attr( 'id' ) ] ) {
preferencesChanged.push( jQuery( this ).attr( 'id' ) );
}
} );
FusionApp.preferencesData = $preferences;
for ( i = 0; i < preferencesChanged.length; i++ ) {
FusionEvents.trigger( 'fusion-preferences-' + preferencesChanged[ i ] + '-updated' );
}
},
/**
* Cancel the changes.
*
* @since 2.0.0
* @return {void}
*/
saveChanges: function() {
var $preferences = {};
jQuery( 'li.fusion-builder-preferences' ).css( 'pointer-events', 'none' );
this.$el.find( 'input' ).each( function() {
$preferences[ jQuery( this ).attr( 'id' ) ] = jQuery( this ).val();
} );
$preferences.overWriteType = jQuery( '.awb-import-option input[name="overwrite-type"]:checked' ).val();
$preferences.shouldInvert = jQuery( '.awb-import-option input[name="invert"]:checked' ).val();
$preferences.contentPlacement = jQuery( '.awb-import-option input[name="load-type"]:checked' ).val();
$preferences.imagesImport = jQuery( '.awb-import-option input[name="images"]:checked' ).val();
FusionApp.preferencesData = $preferences;
jQuery.ajax( {
type: 'POST',
url: fusionAppConfig.ajaxurl,
dataType: 'JSON',
data: {
action: 'fusion_app_save_builder_preferences',
fusion_load_nonce: fusionAppConfig.fusion_load_nonce,
preferences: $preferences
}
} )
.done( function( response ) {
FusionApp.preferences = response;
jQuery( 'li.fusion-builder-preferences' ).css( 'pointer-events', 'auto' );
} );
this.removeView();
},
/**
* Removes the view.
*
* @since 2.0.0
* @return {void}
*/
removeView: function() {
this.$el.find( '.fusion-save-element-fields' ).remove();
this.$el.find( '.fusion-tabs-menu' ).appendTo( '#fusion-builder-front-end-library' );
this.remove();
},
/**
* Show or hide description.
*
* @since 2.0.0
* @param {Object} event - The JS event.
* @return {void}
*/
showHideDescription: function( event ) {
var $element = jQuery( event.currentTarget );
$element.closest( '.fusion-builder-option' ).find( '.description' ).first().slideToggle( 250 );
$element.toggleClass( 'active' );
}
} );
} );
}( jQuery ) );