171 lines
3.6 KiB
JavaScript
171 lines
3.6 KiB
JavaScript
/* global FusionApp, fusionAppConfig, FusionEvents */
|
|
var FusionPageBuilder = FusionPageBuilder || {};
|
|
|
|
( function() {
|
|
|
|
jQuery( document ).ready( function() {
|
|
|
|
FusionPageBuilder.fusion_widget_content = window.wp.Backbone.View.extend( {
|
|
|
|
template: FusionPageBuilder.template( jQuery( '#tmpl-fusion_widget_content' ).html() ),
|
|
|
|
className: 'fusion-widget-content-view',
|
|
|
|
events: {
|
|
},
|
|
|
|
/**
|
|
* First filters applied to widget markup when retrieved via ajax.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {String}
|
|
*/
|
|
filterRenderContent: function ( output ) {
|
|
return output;
|
|
},
|
|
|
|
/**
|
|
* Before Widget Content View actions.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {void}
|
|
*/
|
|
beforeRemove: function () { // eslint-disable-line no-empty-function
|
|
},
|
|
|
|
/**
|
|
* Remove Widget Content View.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {void}
|
|
*/
|
|
removeElement: function() {
|
|
FusionApp.deleteScripts( this.cid );
|
|
this.beforeRemove();
|
|
this.remove();
|
|
},
|
|
|
|
/**
|
|
* Init function.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {void}
|
|
*/
|
|
initialize: function() {
|
|
// Set markup
|
|
if ( this.model.attributes.markup && this.model.attributes.markup.output ) {
|
|
this.model.attributes.markup = FusionApp.removeScripts( this.filterRenderContent( this.model.attributes.markup.output ), this.cid );
|
|
this.injectScripts();
|
|
}
|
|
this.onInit();
|
|
},
|
|
|
|
/**
|
|
* Renders the view.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {Object} this
|
|
*/
|
|
render: function() {
|
|
if ( !this.isAjax && ( 'undefined' === typeof this.model.attributes.markup || '' === this.model.attributes.markup ) ) {
|
|
FusionApp.deleteScripts( this.cid );
|
|
this.getHTML( this );
|
|
}
|
|
this.$el.html( this.template( this.model.attributes ) );
|
|
|
|
this.onRender();
|
|
|
|
return this;
|
|
},
|
|
|
|
onInit: function() {
|
|
this.isAjax = false;
|
|
},
|
|
|
|
onRender: function() { // eslint-disable-line no-empty-function
|
|
},
|
|
|
|
/**
|
|
* Calls getHTML().
|
|
*
|
|
* @since 2.2.0
|
|
* @param {Object} view
|
|
* @return {void}
|
|
*/
|
|
getMarkup: function( view ) {
|
|
this.getHTML( view );
|
|
},
|
|
|
|
/**
|
|
* Add selected widget scripts to Fusion App.
|
|
*
|
|
* @since 2.2.0
|
|
* @return {void}
|
|
*/
|
|
injectScripts: function() {
|
|
var self, dfd;
|
|
self = this;
|
|
dfd = jQuery.Deferred();
|
|
|
|
setTimeout( function() {
|
|
FusionApp.injectScripts( self.cid );
|
|
dfd.resolve();
|
|
}, 100 );
|
|
return dfd.promise();
|
|
},
|
|
|
|
/**
|
|
* Fetch selected widget markup.
|
|
*
|
|
* @since 2.2.0
|
|
* @param {Object} view
|
|
* @return {void}
|
|
*/
|
|
getHTML: function( view ) {
|
|
var self = this,
|
|
params;
|
|
|
|
params = view.model.get( 'params' );
|
|
self.isAjax = true;
|
|
|
|
this.beforeGetHTML();
|
|
|
|
jQuery.ajax( {
|
|
type: 'POST',
|
|
url: fusionAppConfig.ajaxurl,
|
|
dataType: 'JSON',
|
|
data: {
|
|
action: 'fusion_get_widget_markup',
|
|
fusion_load_nonce: fusionAppConfig.fusion_load_nonce,
|
|
type: view.model.attributes.params.type,
|
|
params: params,
|
|
widget_id: view.model.cid
|
|
}
|
|
} )
|
|
.done( function( response ) {
|
|
self.isAjax = false;
|
|
FusionApp.deleteScripts( self.cid );
|
|
|
|
view.model.attributes.markup = FusionApp.removeScripts( self.filterRenderContent( response ), self.cid );
|
|
view.render();
|
|
self.injectScripts()
|
|
.then( function() {
|
|
self.afterGetHTML();
|
|
// Remove parent loading overlay
|
|
FusionEvents.trigger( 'fusion-widget-rendered' );
|
|
} );
|
|
} );
|
|
},
|
|
|
|
beforeGetHTML: function() { // eslint-disable-line no-empty-function
|
|
},
|
|
|
|
afterGetHTML: function() { // eslint-disable-line no-empty-function
|
|
}
|
|
|
|
} );
|
|
|
|
} );
|
|
|
|
}() );
|