220 lines
6.3 KiB
JavaScript
220 lines
6.3 KiB
JavaScript
/* global fusionAllElements, FusionPageBuilderElements */
|
|
var FusionPageBuilder = FusionPageBuilder || {};
|
|
|
|
( function() {
|
|
|
|
jQuery( document ).ready( function() {
|
|
|
|
// Slide child View.
|
|
FusionPageBuilder.fusion_slide = FusionPageBuilder.ChildElementView.extend( {
|
|
|
|
/**
|
|
* Runs just before view is removed.
|
|
*
|
|
* @since 2.0.0
|
|
* @return null
|
|
*/
|
|
beforeRemove: function() {
|
|
var parentView = window.FusionPageBuilderViewManager.getView( this.model.get( 'parent' ) );
|
|
|
|
if ( 'undefined' !== typeof jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( this.$el.closest( '.flexslider:not(.tfs-slider)' ) ).data( 'flexslider' ) ) {
|
|
jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( this.$el.closest( '.flexslider:not(.tfs-slider)' ) ).flexslider( 'destroy' );
|
|
}
|
|
|
|
if ( false === parentView.model.attributes.showPlaceholder && 1 === parentView.model.children.length ) {
|
|
this.$el.closest( '.fusion-slider-sc' ).addClass( 'fusion-show-placeholder' );
|
|
parentView.model.attributes.showPlaceholder = true;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Runs during render() call.
|
|
*
|
|
* @since 2.0
|
|
* @return {void}
|
|
*/
|
|
onRender: function() {
|
|
if ( 'undefined' !== typeof this.model.attributes.selectors ) {
|
|
this.model.attributes.selectors[ 'class' ] += ' ' + this.className;
|
|
this.model.attributes.selectors[ 'class' ] += ( 'video' === this.model.attributes.params.type ) ? ' video' : ' image';
|
|
this.setElementAttributes( this.$el, this.model.attributes.selectors );
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Runs after view DOM is patched.
|
|
*
|
|
* @since 2.0.0
|
|
* @return {void}
|
|
*/
|
|
afterPatch: function() {
|
|
|
|
if ( 'undefined' !== typeof this.model.attributes.selectors ) {
|
|
this.model.attributes.selectors[ 'class' ] += ' ' + this.className;
|
|
this.model.attributes.selectors[ 'class' ] += ( 'video' === this.model.attributes.params.type ) ? ' video' : ' image';
|
|
this.setElementAttributes( this.$el, this.model.attributes.selectors );
|
|
}
|
|
|
|
this._refreshJs();
|
|
},
|
|
|
|
/**
|
|
* Runs after view DOM is patched.
|
|
*
|
|
* @since 2.0
|
|
* @return {void}
|
|
*/
|
|
beforePatch: function() {
|
|
var parentView = window.FusionPageBuilderViewManager.getView( this.model.get( 'parent' ) );
|
|
|
|
if (
|
|
true === parentView.model.attributes.showPlaceholder &&
|
|
(
|
|
( 'undefined' !== this.model.attributes.params.image && '' !== this.model.attributes.params.image ) ||
|
|
( 'undefined' !== this.model.attributes.params.video && '' !== this.model.attributes.params.video )
|
|
)
|
|
) {
|
|
this.$el.closest( '.fusion-slider-sc' ).removeClass( 'fusion-show-placeholder' );
|
|
parentView.model.attributes.showPlaceholder = false;
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* Modify template attributes.
|
|
*
|
|
* @since 2.0
|
|
* @param {Object} atts - The attributes.
|
|
* @return {Object}
|
|
*/
|
|
filterTemplateAtts: function( atts ) {
|
|
var attributes = {};
|
|
|
|
// Validate values and extras.
|
|
this.validateValues( atts.values );
|
|
|
|
// Create attribute objects.
|
|
attributes.sliderShortcodeSlideLink = this.buildSlideLinkAttr( atts.values );
|
|
attributes.sliderShortcodeSlideLi = this.buildLiAttr( atts.values );
|
|
attributes.sliderShortcodeSlideImg = this.buildImgAttr( atts.values );
|
|
attributes.sliderShortcodeSlideImgWrapper = this.buildSlideImgWrapperAttr( atts.values );
|
|
attributes.link = atts.values.link;
|
|
attributes.type = atts.values.type;
|
|
attributes.video = atts.values.video;
|
|
attributes.elementContent = atts.values.element_content;
|
|
|
|
// Any extras that need passed on.
|
|
attributes.cid = this.model.get( 'cid' );
|
|
attributes.parent = this.model.get( 'parent' );
|
|
|
|
return attributes;
|
|
},
|
|
|
|
/**
|
|
* Modifies the values.
|
|
*
|
|
* @since 2.0
|
|
* @param {Object} values - The values object.
|
|
* @return {void}
|
|
*/
|
|
validateValues: function( values ) {
|
|
values.alt = '';
|
|
values.title = '';
|
|
values.src = values.element_content ? values.element_content.replace( '×', 'x' ) : '';
|
|
},
|
|
|
|
/**
|
|
* Builds attributes.
|
|
*
|
|
* @since 2.0
|
|
* @param {Object} values - The values.
|
|
* @return {Object}
|
|
*/
|
|
buildSlideLinkAttr: function( values ) {
|
|
var sliderShortcodeSlideLink = {};
|
|
|
|
if ( 'yes' === values.lightbox ) {
|
|
sliderShortcodeSlideLink[ 'class' ] = 'lightbox-enabled';
|
|
sliderShortcodeSlideLink[ 'data-rel' ] = 'prettyPhoto[gallery_slider_' + this.model.get( 'cid' ) + ']';
|
|
}
|
|
|
|
sliderShortcodeSlideLink.href = values.link;
|
|
sliderShortcodeSlideLink.target = values.linktarget;
|
|
|
|
if ( '_blank' === sliderShortcodeSlideLink.target ) {
|
|
sliderShortcodeSlideLink.rel = 'noopener noreferrer';
|
|
}
|
|
|
|
sliderShortcodeSlideLink.title = values.title;
|
|
|
|
return sliderShortcodeSlideLink;
|
|
},
|
|
|
|
/**
|
|
* Builds attributes.
|
|
*
|
|
* @since 2.0
|
|
* @param {Object} values - The values.
|
|
* @return {Object}
|
|
*/
|
|
buildLiAttr: function( values ) {
|
|
var sliderShortcodeSlideLi = {
|
|
class: ( 'video' === values.type ) ? 'video' : 'image'
|
|
};
|
|
|
|
this.model.set( 'selectors', sliderShortcodeSlideLi );
|
|
|
|
return sliderShortcodeSlideLi;
|
|
},
|
|
|
|
/**
|
|
* Builds attributes.
|
|
*
|
|
* @since 2.0
|
|
* @param {Object} values - The values.
|
|
* @return {Object}
|
|
*/
|
|
buildImgAttr: function( values ) {
|
|
var sliderShortcodeSlideImg = {
|
|
src: values.image,
|
|
alt: values.alt
|
|
};
|
|
|
|
return sliderShortcodeSlideImg;
|
|
},
|
|
|
|
/**
|
|
* Builds attributes.
|
|
*
|
|
* @since 2.0
|
|
* @return {Object}
|
|
*/
|
|
buildSlideImgWrapperAttr: function() {
|
|
var sliderShortcodeSlideImgWrapper = {},
|
|
parent = this.model.get( 'parent' ),
|
|
parentModel,
|
|
parentValues;
|
|
|
|
if ( parent ) {
|
|
|
|
parentModel = FusionPageBuilderElements.find( function( model ) {
|
|
return model.get( 'cid' ) == parent;
|
|
} );
|
|
|
|
parentValues = jQuery.extend( true, {}, fusionAllElements.fusion_slider.defaults, _.fusionCleanParameters( parentModel.get( 'params' ) ) );
|
|
|
|
if ( '' !== parentValues.hover_type ) {
|
|
sliderShortcodeSlideImgWrapper = {
|
|
class: 'fusion-image-hover-element hover-type-' + parentValues.hover_type
|
|
};
|
|
}
|
|
|
|
}
|
|
|
|
return sliderShortcodeSlideImgWrapper;
|
|
}
|
|
|
|
} );
|
|
} );
|
|
}( jQuery ) );
|