File "vc_row.js"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/js_composer/assets/js/frontend_editor/shortcodes/containers/vc_row.js
File size: 4.77 KB
MIME-type: text/plain
Charset: utf-8
(function ( $ ) {
'use strict';
window.InlineShortcodeView_vc_row = window.InlineShortcodeView.extend( {
column_tag: 'vc_column',
events: {
'mouseenter': 'removeHoldActive'
},
layout: 1,
addControls: function () {
this.$controls = $( '<div class="no-controls"></div>' );
this.$controls.appendTo( this.$el );
return this;
},
render: function () {
var $content = this.content();
if ( $content && $content.hasClass( 'vc_row-has-fill' ) ) {
$content.removeClass( 'vc_row-has-fill' );
this.$el.addClass( 'vc_row-has-fill' );
}
window.InlineShortcodeView_vc_row.__super__.render.call( this );
return this;
},
removeHoldActive: function () {
vc.unsetHoldActive();
},
addColumn: function () {
vc.builder.create( {
shortcode: this.column_tag,
parent_id: this.model.get( 'id' )
} ).render();
},
addElement: function ( e ) {
if ( e && e.preventDefault ) {
e.preventDefault();
}
this.addColumn();
},
changeLayout: function ( e ) {
if ( e && e.preventDefault ) {
e.preventDefault();
}
this.layoutEditor().render( this.model ).show();
},
layoutEditor: function () {
if ( _.isUndefined( vc.row_layout_editor ) ) {
vc.row_layout_editor = new vc.RowLayoutUIPanelFrontendEditor( { el: $( '#vc_ui-panel-row-layout' ) } );
}
return vc.row_layout_editor;
},
convertToWidthsArray: function ( string ) {
return _.map( string.split( /_/ ), function ( c ) {
var w = c.split( '' );
w.splice( Math.floor( c.length / 2 ), 0, '/' );
return w.join( '' );
} );
},
changed: function () {
window.InlineShortcodeView_vc_row.__super__.changed.call( this );
this.addLayoutClass();
},
content: function () {
if ( false === this.$content ) {
this.$content = this.$el.find( '.vc_container-anchor:first' ).parent();
}
this.$el.find( '.vc_container-anchor:first' ).remove();
return this.$content;
},
addLayoutClass: function () {
this.$el.removeClass( 'vc_layout_' + this.layout );
this.layout = _.reject( vc.shortcodes.where( { parent_id: this.model.get( 'id' ) } ), function ( model ) {
return model.get( 'deleted' );
} ).length;
this.$el.addClass( 'vc_layout_' + this.layout );
},
convertRowColumns: function ( layout, builder ) {
if ( !layout ) {
return false;
}
var column_params, new_model, columns_contents, columns;
columns_contents = [];
columns = this.convertToWidthsArray( layout );
vc.layout_change_shortcodes = [];
vc.layout_old_columns = vc.shortcodes.where( { parent_id: this.model.get( 'id' ) } );
_.each( vc.layout_old_columns, function ( column ) {
column.set( 'deleted', true );
columns_contents.push( {
shortcodes: vc.shortcodes.where( { parent_id: column.get( 'id' ) } ),
params: column.get( 'params' )
} );
} );
_.each( columns, function ( column ) {
var prev_settings = columns_contents.shift();
if ( _.isObject( prev_settings ) ) {
new_model = builder.create( {
shortcode: this.column_tag,
parent_id: this.model.get( 'id' ),
order: vc.shortcodes.nextOrder(),
params: _.extend( {}, prev_settings.params, { width: column } )
} ).last();
_.each( prev_settings.shortcodes, function ( shortcode ) {
shortcode.save( {
parent_id: new_model.get( 'id' ),
order: vc.shortcodes.nextOrder()
},
{ silent: true } );
vc.layout_change_shortcodes.push( shortcode );
}, this );
} else {
column_params = { width: column };
new_model = builder.create( {
shortcode: this.column_tag,
parent_id: this.model.get( 'id' ),
order: vc.shortcodes.nextOrder(),
params: column_params
} ).last();
}
}, this );
_.each( columns_contents, function ( column ) {
_.each( column.shortcodes, function ( shortcode ) {
shortcode.save( {
parent_id: new_model.get( 'id' ),
order: vc.shortcodes.nextOrder()
},
{ silent: true } );
vc.layout_change_shortcodes.push( shortcode );
if ( shortcode.view.rowsColumnsConverted ) {
shortcode.view.rowsColumnsConverted();
}
}, this );
}, this );
builder.render( function () {
_.each( vc.layout_change_shortcodes, function ( shortcode ) {
shortcode.trigger( 'change:parent_id' );
if ( shortcode.view.rowsColumnsConverted ) {
shortcode.view.rowsColumnsConverted();
}
} );
_.each( vc.layout_old_columns, function ( column ) {
column.destroy();
} );
vc.layout_old_columns = [];
vc.layout_change_shortcodes = [];
} );
return columns;
},
allowAddControl: function () {
return 'edit' !== vc_user_access().getState( 'shortcodes' );
},
allowAddControlOnEmpty: function () {
return 'edit' !== vc_user_access().getState( 'shortcodes' );
}
} );
})( window.jQuery );