Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /var/www/web28/html/wp-content/plugins/fusion-builder/front-end/views/ |
Current File : //var/www/web28/html/wp-content/plugins/fusion-builder/front-end/views/view-library.js |
/* global FusionApp, FusionPageBuilderViewManager, fusionAllElements, fusionBuilderText, avadaPanelIFrame, fusionBuilderText, FusionPageBuilderApp, fusionAppConfig, FusionEvents, fusionGlobalManager */ /* eslint no-undef: 0 */ /* eslint no-alert: 0 */ var FusionPageBuilder = FusionPageBuilder || {}; ( function() { jQuery( document ).ready( function() { // Builder Library FusionPageBuilder.LibraryView = FusionPageBuilder.BaseLibraryView.extend( { el: '#fusion-builder-front-end-library', events: { 'click .fusion-tabs-menu > li > a': 'switchTab', 'change .fusion-builder-demo-select': 'demoSelect', 'input .fusion-builder-demo-page-link': 'demoSelectByURL', 'click .fusion-builder-demo-button-load': 'loadDemoPage', 'click .ui-dialog-titlebar-close': 'removeView', 'click .fusion-builder-layout-button-load': 'loadLayout', 'click .fusion-builder-layout-button-save': 'saveLayout', 'click .fusion-builder-layout-button-delete': 'deleteLayout', 'click .fusion-builder-element-button-save': 'saveElement', 'click .awb-sites-import-js': 'importDemoPage', 'click .awb-import-options-toggle': 'toggleImportOptions', 'click .awb-import-studio-item': 'loadStudioLayout', 'change .awb-import-options .awb-import-style input[name="overwrite-type"]': 'triggerPreviewChanges', 'change .awb-import-options .awb-import-inversion input[name="invert"]': 'triggerPreviewChanges' }, /** * Init. * * @since 2.0.0 * @return {void} */ initialize: function() { var self = this; jQuery( document ).on( 'click', '.fusion-builder-library-dialog .fusion-tabs-menu > li > a', function( event ) { self.switchTab( event ); } ); // Loader animation this.listenTo( FusionEvents, 'fusion-show-loader', this.showLoader ); this.listenTo( FusionEvents, 'fusion-hide-loader', this.hideLoader ); this.listenTo( FusionEvents, 'awb-studio-import-modal-closed', this.removeView ); }, showLoader: function() { jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( '.fusion-builder-live-editor' ).css( 'height', '148px' ); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( '.fusion-builder-live-editor' ).append( '<div class="fusion-builder-element-content fusion-loader"><span class="fusion-builder-loader"></span></div>' ); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( '#fusion_builder_container' ).hide(); }, hideLoader: function() { jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( '#fusion_builder_container' ).fadeIn( 'fast' ); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( '.fusion-builder-live-editor > .fusion-builder-element-content.fusion-loader' ).remove(); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( '.fusion-builder-live-editor' ).removeAttr( 'style' ); }, /** * Renders the view. * * @since 2.0.0 * @return {Object} this */ render: function() { var self = this; this.$el = this.$el.dialog( { title: fusionBuilderText.builder_ibrary_title, width: FusionApp.dialog.dialogWidth, height: FusionApp.dialog.dialogHeight, draggable: false, resizable: false, modal: true, dialogClass: 'fusion-builder-large-library-dialog fusion-builder-dialog fusion-builder-library-dialog', open: function() { FusionApp.dialog.resizeDialog(); }, close: function() { self.removeView(); } } ).closest( '.ui-dialog' ); this.appendSave(); this.targetTab(); this.focusInput(); return this; }, /** * Find the target tab and trigger the 'click' event on it. * * @since 2.0.0 * @return {void} */ targetTab: function() { if ( 'undefined' !== typeof this.model.target ) { this.$el.find( '.fusion-tabs-menu > li > a[href="' + this.model.target + '"]' ).trigger( 'click' ); } else { this.$el.find( '.fusion-tabs-menu > li:first-child > a' ).trigger( 'click' ); } }, /** * Focus on an element. * * @since 2.0.0 * @return {void} */ focusInput: function() { var self = this; if ( 'undefined' !== typeof this.model.focus ) { setTimeout( function() { self.$el.find( self.model.target ).find( self.model.focus ).focus(); }, 200 ); } }, /** * Appends the HTML that allows users to save an element. * * @since 2.0.0 * @return {void} */ appendSave: function() { var elementView, elementSave; if ( 'undefined' !== typeof this.model.target && 'undefined' !== typeof this.model.element_cid ) { elementView = FusionPageBuilderViewManager.getView( this.model.element_cid ); elementSave = 'undefined' !== typeof elementView.getSaveLabel ? elementView.getSaveLabel() : fusionBuilderText.save_element; jQuery( this.model.target ).find( '.fusion-builder-layouts-header-element-fields' ).append( '<div class="fusion-save-element-fields"><div class="save-as-global"><label><input type="checkbox" id="fusion_save_global" name="fusion_save_global">' + fusionBuilderText.save_global + '</label></div><input type="text" value="' + this.model.element_name + '" id="fusion-builder-save-element-input" class="fusion-builder-save-element-input" placeholder="' + fusionBuilderText.enter_name + '" /><a href="#" class="fusion-builder-save-column fusion-builder-element-button-save" data-element-cid="' + this.model.element_cid + '">' + elementSave + '</a></div>' ); } }, /** * Switches a tab. Takes care of toggling the 'current' & 'inactive' classes * and also changes the 'display' property of elements to properly make the switch. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ switchTab: function( event ) { var $tabLink = jQuery( event.currentTarget ), tab = $tabLink.attr( 'href' ); if ( event ) { event.preventDefault(); } FusionEvents.trigger( 'fusion-switch-element-option-tabs' ); $tabLink.parent( 'li' ).addClass( 'current' ).removeClass( 'inactive' ); $tabLink.parent( 'li' ).siblings().removeClass( 'current' ).addClass( 'inactive' ); this.$el.find( '.fusion-builder-layouts-tab' ).css( 'display', 'none' ); this.$el.find( tab ).css( 'display', 'block' ); // Trigger ajax for studio. if ( '#fusion-builder-fusion_template-studio' === tab ) { this.loadStudio( 'fusion_template' ); } // Trigger ajax for demos. if ( '#fusion-builder-layouts-demos' === tab ) { this.loadWebsite(); } }, /** * Shows/Hides demos on select. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ demoSelect: function( event ) { var $selectedDemo = jQuery( event.target ).val(); jQuery( '#fusion-builder-layouts-demos .fusion-page-layouts' ).addClass( 'hidden' ); jQuery( '#fusion-builder-demo-url-invalid' ).addClass( 'hidden' ); jQuery( '.fusion-builder-demo-page-link' ).val( '' ); jQuery( '#fusion-builder-layouts-demos .demo-' + $selectedDemo ).removeClass( 'hidden' ); }, /** * Shows/Hides demos on added URL change. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ demoSelectByURL: function( event ) { var demoPageLink = jQuery( event.target ).val(), demoPage, parentDemo, demoSelectorVal; demoPageLink = demoPageLink.replace( 'https://', '' ).replace( 'http://', '' ); if ( '/' !== demoPageLink[ demoPageLink.length - 1 ] && ! _.isEmpty( demoPageLink ) ) { demoPageLink += '/'; } demoPage = jQuery( '#fusion-builder-layouts-demos' ).find( '.fusion-page-layout[data-page-link="' + demoPageLink + '"]' ); parentDemo = demoPage.closest( '.fusion-page-layouts' ); jQuery( '#fusion-builder-layouts-demos .fusion-page-layouts' ).addClass( 'hidden' ); jQuery( '#fusion-builder-demo-url-invalid' ).addClass( 'hidden' ); if ( _.isEmpty( demoPageLink ) ) { demoSelectorVal = jQuery( '.fusion-builder-demo-select' ).val(); jQuery( '#fusion-builder-layouts-demos .demo-' + demoSelectorVal ).removeClass( 'hidden' ); } else if ( ! demoPage.length ) { jQuery( '#fusion-builder-demo-url-invalid' ).removeClass( 'hidden' ); } else { parentDemo.show(); parentDemo.find( '.fusion-page-layout' ).hide(); demoPage.show(); } }, /** * Loads the demo pages via an ajax call. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ loadDemoPage: function( event ) { var pageName, demoName, postId, content, self = this, frameDocument = document.getElementById( 'fb-preview' ).contentWindow.document, oldWrite = frameDocument.write; // jshint ignore:line // Turn document write off before page request. frameDocument.write = function() {}; // eslint-disable-line no-empty-function document.write = function() {}; // eslint-disable-line no-empty-function if ( event ) { event.preventDefault(); } FusionApp.confirmationPopup( { title: fusionBuilderText.import_demo_page, content: fusionBuilderText.importing_single_page, actions: [ { label: fusionBuilderText.cancel, classes: 'no', callback: function() { FusionApp.confirmationPopup( { action: 'hide' } ); } }, { label: fusionBuilderText.ok, classes: 'yes', callback: function() { if ( true === FusionPageBuilderApp.layoutIsLoading ) { return; } FusionPageBuilderApp.layoutIsLoading = true; FusionPageBuilderApp.loaded = false; pageName = jQuery( event.currentTarget ).data( 'page-name' ); demoName = jQuery( event.currentTarget ).data( 'demo-name' ); postId = jQuery( event.currentTarget ).data( 'post-id' ); jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, data: { action: 'fusion_builder_load_demo', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, page_name: pageName, demo_name: demoName, post_id: postId }, beforeSend: function() { FusionEvents.trigger( 'fusion-show-loader' ); // Hide confirmation popup. FusionApp.confirmationPopup( { action: 'hide' } ); // Hide library dialog. self.$el.css( 'display', 'none' ); self.$el.next( '.ui-widget-overlay' ).css( 'display', 'none' ); } } ) .done( function( data ) { var dataObj, needsRefresh = false, newCustomCss = false; // New layout loaded FusionPageBuilderApp.layoutLoaded(); dataObj = JSON.parse( data ); newCustomCss = 'undefined' !== typeof dataObj.custom_css ? dataObj.custom_css : false; content = dataObj.post_content; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = newCustomCss; } jQuery.each( dataObj.post_meta, function( name, value ) { needsRefresh = true; FusionApp.data.postMeta[ name ] = value[ 0 ]; } ); if ( 'undefined' !== typeof dataObj.page_template && FusionApp.data.postMeta._wp_page_template !== dataObj.page_template ) { FusionApp.data.postMeta._wp_page_template = dataObj.page_template; needsRefresh = true; } if ( needsRefresh ) { FusionApp.contentChange( 'page', 'page-option' ); } FusionApp.data.postContent = content; FusionApp.contentChange( 'page', 'builder-content' ); if ( newCustomCss && 'undefined' !== typeof avadaPanelIFrame ) { // Add the CSS to the page. avadaPanelIFrame.liveUpdatePageCustomCSS( newCustomCss ); } // Create new builder layout. FusionPageBuilderApp.clearBuilderLayout( false ); FusionPageBuilderApp.createBuilderLayout( content ); // Refresh frame if needed. if ( needsRefresh ) { FusionApp.fullRefresh(); } FusionPageBuilderApp.layoutIsLoading = false; } ) .always( function() { // Add success/transition of some kind here. FusionEvents.trigger( 'fusion-hide-loader' ); frameDocument.write = oldWrite; document.write = oldWrite; FusionPageBuilderApp.loaded = true; FusionEvents.trigger( 'fusion-builder-loaded' ); self.removeView(); } ); } } ] } ); }, /** * Loads the demo pages via an ajax call. * * @since 3.5 * @param {Object} event - The event. * @return {void} */ importDemoPage: function( event ) { var demoName, pageId, completeCB, self = this, frameDocument = document.getElementById( 'fb-preview' ).contentWindow.document, oldWrite = frameDocument.write; // jshint ignore:line // Turn document write off before page request. frameDocument.write = function() {}; // eslint-disable-line no-empty-function document.write = function() {}; // eslint-disable-line no-empty-function completeCB = function() { // Add success/transition of some kind here. FusionEvents.trigger( 'fusion-hide-loader' ); frameDocument.write = oldWrite; document.write = oldWrite; FusionPageBuilderApp.loaded = true; FusionEvents.trigger( 'fusion-builder-loaded' ); self.removeView(); self.demoPageImportComplete(); }; if ( event ) { event.preventDefault(); } if ( true === FusionPageBuilderApp.layoutIsLoading ) { return; } FusionPageBuilderApp.layoutIsLoading = true; FusionPageBuilderApp.loaded = false; demoName = jQuery( event.currentTarget ).data( 'demo-name' ); pageId = jQuery( event.currentTarget ).data( 'page-id' ); jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, data: { action: 'awb_load_websites_page', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, demo_name: demoName, post_id: FusionApp.getPost( 'post_id' ), page_id: pageId }, beforeSend: function() { self.beforeDemoPageImport(); } } ) .done( function( data ) { var i, dataObj, promises = [], newDataObj = {}, dfd = jQuery.Deferred(), // Master deferred. dfdNext = dfd; // Next deferred in the chain. dataObj = JSON.parse( data ); if ( ! dataObj.success ) { FusionPageBuilderApp.layoutIsLoading = false; alert( fusionBuilderText.api_error_text ); completeCB(); return; } dfd.resolve(); // Reset array. self.mediaImportKeys = []; if ( 'object' === typeof dataObj.avada_media ) { newDataObj.images = dataObj.avada_media.images; newDataObj.videos = dataObj.avada_media.videos; dataObj.avada_media = newDataObj; } // We have the content, let's check for assets. // Filter out empty properties (now those are empty arrays). if ( 'object' === typeof dataObj.avada_media ) { Object.keys( dataObj.avada_media ).forEach( function( key ) { // We expect and object. if ( 'object' === typeof dataObj.avada_media[ key ] && ! Array.isArray( dataObj.avada_media[ key ] ) ) { self.mediaImportKeys.push( key ); } } ); } // Import media if needed. if ( 0 < self.mediaImportKeys.length ) { // Set first AJAX response as initial data. FusionPageBuilderApp.website.setImportData( dataObj ); for ( i = 0; i < self.mediaImportKeys.length; i++ ) { // IIFE to freeze the value of i. ( function( k ) { // eslint-disable-line no-loop-func dfdNext = dfdNext.then( function() { return self.importDemoPageMedia( FusionPageBuilderApp.website.getImportData(), self.mediaImportKeys[ k ] ); } ); promises.push( dfdNext ); }( i ) ); } jQuery.when.apply( null, promises ).then( function() { self.setPageContent( dataObj, FusionPageBuilderApp.website.getImportData().post_content ); completeCB(); // Reset import data. FusionPageBuilderApp.website.resetImportData(); }, function() { alert( fusionBuilderText.demo_importing_content_failed ); completeCB(); // Reset import data. FusionPageBuilderApp.website.resetImportData(); } ); } else { self.setPageContent( dataObj, dataObj.post_content ); completeCB(); } } ); }, /** * * @param {Object} dataObj * @param {String} newContent */ setPageContent: function( dataObj, newContent ) { var needsRefresh = false, newCustomCss = false; // New layout loaded FusionPageBuilderApp.layoutLoaded(); newCustomCss = 'undefined' !== typeof dataObj.custom_css ? dataObj.custom_css : false; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = newCustomCss; } jQuery.each( dataObj.post_meta, function( name, value ) { needsRefresh = true; FusionApp.data.postMeta[ name ] = value[ 0 ]; } ); if ( 'undefined' !== typeof dataObj.page_template && FusionApp.data.postMeta._wp_page_template !== dataObj.page_template ) { FusionApp.data.postMeta._wp_page_template = dataObj.page_template; needsRefresh = true; } if ( needsRefresh ) { FusionApp.contentChange( 'page', 'page-option' ); } FusionApp.setPost( 'post_content', newContent ); FusionApp.contentChange( 'page', 'builder-content' ); // Refresh frame if needed. if ( needsRefresh ) { FusionApp.fullRefresh( false, {}, { post_content: newContent } ); } else { if ( newCustomCss && 'undefined' !== typeof avadaPanelIFrame ) { // Add the CSS to the page. avadaPanelIFrame.liveUpdatePageCustomCSS( newCustomCss ); } // Create new builder layout. FusionPageBuilderApp.clearBuilderLayout( false ); FusionPageBuilderApp.createBuilderLayout( newContent ); } FusionPageBuilderApp.layoutIsLoading = false; }, /** * Does what needs to be done when demo page is imported. * * @since 3.5 */ demoPageImportComplete: function() { this.$el.css( 'display', 'none' ); this.$el.next( '.ui-widget-overlay' ).css( 'display', 'none' ); FusionPageBuilderApp.loaded = true; FusionEvents.trigger( 'fusion-builder-loaded' ); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( 'body' ).trigger( 'fusion-sticky-header-reinit' ); // Remove modal view. this.demoImportModalView.remove(); }, /** * Loads the layout via AJAX. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ loadLayout: function( event ) { var $layout, contentPlacement, content, self = this; if ( event ) { event.preventDefault(); } if ( true === FusionPageBuilderApp.layoutIsLoading ) { return; } FusionPageBuilderApp.layoutIsLoading = true; $layout = jQuery( event.currentTarget ).closest( '.fusion-page-layout' ); contentPlacement = jQuery( event.currentTarget ).data( 'load-type' ); // Get correct content. FusionPageBuilderApp.builderToShortcodes(); content = FusionApp.getPost( 'post_content' ); // eslint-disable-line camelcase FusionPageBuilderApp.loaded = false; jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, data: { action: 'fusion_builder_load_layout', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, fusion_layout_id: $layout.data( 'layout_id' ), post_id: FusionApp.getPost( 'post_id' ) }, beforeSend: function() { FusionEvents.trigger( 'fusion-show-loader' ); // Hide library dialog. self.$el.css( 'display', 'none' ); self.$el.next( '.ui-widget-overlay' ).css( 'display', 'none' ); } } ) .done( function( data ) { var dataObj, newCustomCss, needsRefresh = false, existingCss = 'undefined' !== typeof FusionApp.data.postMeta._fusion_builder_custom_css ? FusionApp.data.postMeta._fusion_builder_custom_css : ''; // New layout loaded FusionPageBuilderApp.layoutLoaded(); dataObj = JSON.parse( data ); newCustomCss = 'undefined' !== typeof dataObj.custom_css ? dataObj.custom_css : false; if ( 'above' === contentPlacement ) { content = dataObj.post_content + content; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = newCustomCss + '\n' + existingCss; } } else if ( 'below' === contentPlacement ) { content = content + dataObj.post_content; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = existingCss + '\n' + newCustomCss; } } else { content = dataObj.post_content; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = newCustomCss; } jQuery.each( dataObj.post_meta, function( name, value ) { needsRefresh = true; FusionApp.data.postMeta[ name ] = value[ 0 ]; } ); if ( 'undefined' !== typeof dataObj.page_template && FusionApp.data.postMeta._wp_page_template !== dataObj.page_template ) { FusionApp.data.postMeta._wp_page_template = dataObj.page_template; needsRefresh = true; } if ( needsRefresh ) { FusionApp.contentChange( 'page', 'page-option' ); } } FusionApp.setPost( 'post_content', content ); FusionApp.contentChange( 'page', 'builder-content' ); if ( needsRefresh ) { // Set new content and refresh frame. FusionApp.fullRefresh( false, {}, { post_content: content } ); } else { if ( newCustomCss && 'undefined' !== typeof avadaPanelIFrame ) { // Add the CSS to the page. avadaPanelIFrame.liveUpdatePageCustomCSS( newCustomCss ); } // Create new builder layout. FusionPageBuilderApp.clearBuilderLayout( false ); FusionPageBuilderApp.createBuilderLayout( content ); } FusionPageBuilderApp.layoutIsLoading = false; } ) .always( function() { FusionPageBuilderApp.loaded = true; FusionEvents.trigger( 'fusion-builder-loaded' ); FusionEvents.trigger( 'fusion-hide-loader' ); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( 'body' ).trigger( 'fusion-sticky-header-reinit' ); self.removeView(); } ); }, /** * Loads the layout via AJAX. * * @since 2.0.0 * @param {Object} [event] The event. * @return {void} */ loadStudioLayout: function( event ) { var self = this, category = 'undefined' !== typeof FusionApp.data.postDetails.post_type && 'fusion_form' === FusionApp.data.postDetails.post_type ? 'forms' : 'fusion_template', importOptions = this.getImportOptions( event ); if ( event ) { event.preventDefault(); } // Off canvas. category = 'undefined' !== typeof FusionApp.data.postDetails.post_type && 'awb_off_canvas' === FusionApp.data.postDetails.post_type ? FusionApp.data.postDetails.post_type : category; if ( 'string' === typeof FusionApp.data.template_category ) { category = FusionApp.data.template_category; } if ( true === FusionPageBuilderApp.layoutIsLoading ) { return; } FusionPageBuilderApp.layoutIsLoading = true; // Get correct content. FusionPageBuilderApp.builderToShortcodes(); content = FusionApp.getPost( 'post_content' ); // eslint-disable-line camelcase FusionPageBuilderApp.loaded = false; jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, dataType: 'JSON', data: { action: 'fusion_builder_load_layout', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, fusion_layout_id: importOptions.layoutID, fusion_studio: true, overWriteType: importOptions.overWriteType, shouldInvert: importOptions.shouldInvert, imagesImport: importOptions.imagesImport, post_id: FusionApp.getPost( 'post_id' ), category: category }, beforeSend: function() { self.beforeStudioItemImport(); }, success: function( data ) { var i, promises = [], dfd = jQuery.Deferred(), // Master deferred. dfdNext = dfd; // Next deferred in the chain. dfd.resolve(); // Reset array. self.mediaImportKeys = []; // We have the content, let's check for assets. // Filter out empty properties (now those are empty arrays). if ( 'object' === typeof data.avada_media ) { Object.keys( data.avada_media ).forEach( function( key ) { // We expect and object. if ( 'object' === typeof data.avada_media[ key ] && ! Array.isArray( data.avada_media[ key ] ) ) { self.mediaImportKeys.push( key ); } } ); } // Import studio media if needed. if ( 0 < self.mediaImportKeys.length ) { // Set first AJAX response as initial data. FusionPageBuilderApp.studio.setImportData( data ); for ( i = 0; i < self.mediaImportKeys.length; i++ ) { // IIFE to freeze the value of i. ( function( k ) { // eslint-disable-line no-loop-func dfdNext = dfdNext.then( function() { return self.importStudioMedia( FusionPageBuilderApp.studio.getImportData(), self.mediaImportKeys[ k ], importOptions ); } ); promises.push( dfdNext ); }( i ) ); } jQuery.when.apply( null, promises ).then( function() { /* var lastAjaxResponse; if ( 1 === promises.length ) { lastAjaxResponse = arguments[ 0 ]; } else { lastAjaxResponse = arguments[ promises.length - 1 ][ 0 ]; } */ self.setStudioContent( data, FusionPageBuilderApp.studio.getImportData().post_content ); FusionEvents.trigger( 'fusion-studio-content-imported', FusionPageBuilderApp.studio.getImportData() ); self.studioLayoutImportComplete( event ); // Reset import data. FusionPageBuilderApp.studio.resetImportData(); }, function() { self.studioImportModalView.updateStatus( fusionBuilderText.studio_importing_content_failed ); self.studioLayoutImportComplete( event ); // Reset import data. FusionPageBuilderApp.studio.resetImportData(); } ); } else { self.setStudioContent( data, data.post_content ); FusionEvents.trigger( 'fusion-studio-content-imported', data ); self.studioLayoutImportComplete( event ); } } } ); }, /** * Does what needs to be done when layout is imported. * * @since 3.5 * @param {Object} event - The event. */ studioLayoutImportComplete: function( event ) { var $layout = jQuery( event.currentTarget ).closest( '.fusion-page-layout' ), $layoutsContainer = $layout.closest( '.studio-imports' ); $layoutsContainer.show(); this.$el.css( 'display', 'none' ); this.$el.next( '.ui-widget-overlay' ).css( 'display', 'none' ); FusionPageBuilderApp.loaded = true; FusionEvents.trigger( 'fusion-builder-loaded' ); jQuery( '#fb-preview' )[ 0 ].contentWindow.jQuery( 'body' ).trigger( 'fusion-sticky-header-reinit' ); // Remove modal view. this.studioImportModalView.remove(); // Close library modal. this.removeView(); }, /** * * @param {Object} dataObj * @param {String} newContent */ setStudioContent: function( dataObj, newContent ) { var newCustomCss, needsRefresh = false, existingCss = 'undefined' !== typeof FusionApp.data.postMeta._fusion_builder_custom_css ? FusionApp.data.postMeta._fusion_builder_custom_css : '', contentPlacement = jQuery( '.awb-import-options-group' ).find( 'input[name="load-type"]:checked' ).val(), content = ''; // Get correct content. FusionPageBuilderApp.builderToShortcodes(); content = FusionApp.getPost( 'post_content' ); // eslint-disable-line camelcase // New layout loaded FusionPageBuilderApp.layoutLoaded(); newCustomCss = 'undefined' !== typeof dataObj.custom_css ? dataObj.custom_css : false; if ( 'load-type-above' === contentPlacement ) { content = newContent + content; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = newCustomCss + '\n' + existingCss; } } else if ( 'load-type-below' === contentPlacement ) { content = content + newContent; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = existingCss + '\n' + newCustomCss; } } else { content = newContent; if ( newCustomCss ) { FusionApp.data.postMeta._fusion_builder_custom_css = newCustomCss; } // Set _fusion meta. if ( 'undefined' !== typeof dataObj.post_meta && 'undefined' !== typeof dataObj.post_meta._fusion ) { jQuery.each( dataObj.post_meta._fusion, function( name, value ) { needsRefresh = true; FusionApp.data.postMeta._fusion[ name ] = value; } ); } if ( needsRefresh ) { FusionApp.contentChange( 'page', 'page-option' ); } } FusionApp.setPost( 'post_content', content ); FusionApp.contentChange( 'page', 'builder-content' ); if ( needsRefresh ) { // Set new content and refresh frame. FusionApp.fullRefresh( false, {}, { post_content: content } ); } else { if ( newCustomCss && 'undefined' !== typeof avadaPanelIFrame ) { // Add the CSS to the page. avadaPanelIFrame.liveUpdatePageCustomCSS( newCustomCss ); } // Create new builder layout. FusionPageBuilderApp.clearBuilderLayout( false ); FusionPageBuilderApp.createBuilderLayout( content ); } FusionPageBuilderApp.layoutIsLoading = false; }, /** * Saves the layout via AJAX. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ saveLayout: function( event ) { var templateContent, templateName, layoutsContainer, currentPostID, customCSS, pageTemplate; if ( event ) { event.preventDefault(); } FusionPageBuilderApp.builderToShortcodes(); templateContent = FusionApp.getPost( 'post_content' ); // eslint-disable-line camelcase templateName = jQuery( '#new_template_name' ).val(); layoutsContainer = jQuery( '#fusion-builder-layouts-templates .fusion-page-layouts' ); currentPostID = jQuery( '#fusion_builder_main_container' ).data( 'post-id' ); customCSS = 'undefined' !== typeof FusionApp.data.postMeta._fusion_builder_custom_css ? FusionApp.data.postMeta._fusion_builder_custom_css : ''; pageTemplate = 'undefined' !== typeof FusionApp.data.postMeta._wp_page_template ? FusionApp.data.postMeta._wp_page_template : ''; if ( '' !== templateName ) { jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, dataType: 'json', data: { action: 'fusion_builder_save_layout', fusion_po_type: 'object', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, fusion_layout_name: templateName, fusion_layout_content: templateContent, fusion_layout_post_type: 'fusion_template', fusion_current_post_id: currentPostID, fusion_custom_css: customCSS, fusion_page_template: pageTemplate, fusion_options: FusionApp.data.postMeta, fusion_front_end: true }, complete: function( data ) { layoutsContainer.prepend( data.responseText ); } } ); jQuery( '#new_template_name' ).val( '' ); } else { alert( fusionBuilderText.please_enter_template_name ); // jshint ignore: line } }, /** * Deletes a layout via AJAX. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ deleteLayout: function( event ) { var $layout; if ( event ) { event.preventDefault(); FusionApp.confirmationPopup( { title: fusionBuilderText.are_you_sure, content: fusionBuilderText.are_you_sure_you_want_to_delete_this, actions: [ { label: fusionBuilderText.cancel, classes: 'no', callback: function() { FusionApp.confirmationPopup( { action: 'hide' } ); } }, { label: fusionBuilderText.im_sure, classes: 'yes', callback: function() { if ( true === FusionPageBuilderApp.layoutIsDeleting ) { return; } FusionPageBuilderApp.layoutIsDeleting = true; $layout = jQuery( event.currentTarget ).closest( '.fusion-page-layout' ); jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, data: { action: 'fusion_builder_delete_layout', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, fusion_layout_id: $layout.data( 'layout_id' ) } } ) .done( function() { $layout.remove(); FusionPageBuilderApp.layoutIsDeleting = false; } ); FusionApp.confirmationPopup( { action: 'hide' } ); } } ] } ); } }, /** * Saves an element via AJAX. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ saveElement: function( event ) { var elementName = jQuery( '#fusion-builder-save-element-input' ).val(), layoutsContainer = jQuery( this.model.target ).find( '.fusion-page-layouts' ), saveGlobal = jQuery( this.model.target ).find( '#fusion_save_global' ).is( ':checked' ), elementView = FusionPageBuilderViewManager.getView( this.model.element_cid ), elementContent = elementView.getContent(), elementCategory = 'undefined' !== typeof elementView.getCategory ? elementView.getCategory() : 'elements', isDuplicate = false, oldGLobalID = null, wrapperClass = '', params = {}; if ( event ) { event.preventDefault(); } if ( 'undefined' !== typeof elementView.model.attributes.params && 'undefined' !== typeof elementView.model.attributes.params.fusion_global ) { // Make a copy. oldGLobalID = elementView.model.attributes.params.fusion_global; params = elementView.model.get( 'params' ); // Remove temporarily and update model delete params.fusion_global; elementView.model.set( 'params', params ); // Get content. elementContent = elementView.getColumnContent(); // Add it back. params.fusion_global = oldGLobalID; elementView.model.set( 'params', params ); } switch ( elementCategory ) { case 'sections': wrapperClass = 'ul.fusion-page-layouts.fusion-layout-sections li'; break; case 'columns': wrapperClass = 'ul.fusion-page-layouts.fusion-layout-columns li'; break; case 'elements': wrapperClass = 'ul.fusion-page-layouts.fusion-layout-elements li'; break; } jQuery.each( jQuery( wrapperClass ), function() { var templateName = jQuery( this ).find( 'h4.fusion-page-layout-title' ).html().split( '<div ' )[ 0 ]; templateName = templateName.replace( /\u2013|\u2014/g, '-' ); if ( elementName.toLowerCase().trim() === templateName.toLowerCase().trim() ) { alert( fusionBuilderText.duplicate_element_name_error ); // jshint ignore:line isDuplicate = true; return false; } } ); if ( true === FusionPageBuilderApp.layoutIsSaving || true === isDuplicate ) { return; } FusionPageBuilderApp.layoutIsSaving = true; if ( '' !== elementName ) { jQuery.ajax( { type: 'POST', url: fusionAppConfig.ajaxurl, dataType: 'json', data: { action: 'fusion_builder_save_layout', fusion_load_nonce: fusionAppConfig.fusion_load_nonce, fusion_layout_name: elementName, fusion_layout_content: elementContent, fusion_layout_post_type: 'fusion_element', fusion_layout_new_cat: elementCategory, fusion_save_global: saveGlobal, fusion_front_end: true }, complete: function( data ) { var MultiGlobalArgs, cid = elementView.model.get( 'cid' ), globalID = jQuery( data.responseText ).attr( 'data-layout_id' ); FusionPageBuilderApp.layoutIsSaving = false; layoutsContainer.prepend( data.responseText ); jQuery( '.fusion-save-element-fields' ).remove(); // If global, make it. if ( saveGlobal ) { // For nested elements. if ( 'undefined' === typeof elementView.model.attributes.params ) { elementView.model.attributes.params = {}; } elementView.model.attributes.params.fusion_global = globalID; if ( 'sections' === elementCategory ) { FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"] .fusion-builder-module-controls-type-container .fusion-builder-module-controls' ).after( '<a href="#" class="fusion-builder-container-global fusion-builder-module-control fusion-builder-unglobal-tooltip" data-cid=' + cid + '><span class="fusiona-globe"></span><span class="fusion-container-tooltip"><span class="fusion-tooltip-text">' + fusionBuilderText.global_container + '</span></span></a>' ); FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"]' ).addClass( 'fusion-global-container' ); } else if ( 'columns' === elementCategory ) { FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"] .fusion-builder-module-controls-inner.fusion-builder-column-controls-inner' ).after( '<a href="#" class="fusion-builder-column-global fusion-builder-module-control fusion-builder-unglobal-tooltip" data-cid=' + cid + '><span class="fusiona-globe"></span><span class="fusion-column-tooltip"><span class="fusion-tooltip-text">' + fusionBuilderText.global_column + '</span></span></a>' ); FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"]' ).addClass( 'fusion-global-column' ); } else if ( 'elements' === elementCategory && 'undefined' !== typeof elementView.model.get( 'multi' ) && 'multi_element_parent' === elementView.model.get( 'multi' ) ) { FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"]' ).addClass( 'fusion-global-parent-element' ); FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"] .fusion-builder-module-controls-inner' ).after( '<a href="#" class="fusion-builder-element-global fusion-builder-module-control fusion-builder-unglobal-tooltip" data-cid=' + cid + '><span class="fusiona-globe"></span><span class="fusion-element-tooltip"><span class="fusion-tooltip-text">' + fusionBuilderText.global_element + '</span></span></a>' ); } else if ( 'elements' === elementCategory && 'fusion_builder_row_inner' === elementView.model.get( 'element_type' ) ) { FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"]' ).addClass( 'fusion-global-nested-row' ); FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"] .fusion-builder-module-controls-inner' ).after( '<a href="#" class="fusion-builder-element-global fusion-builder-module-control fusion-builder-unglobal-tooltip" data-cid=' + cid + '><span class="fusiona-globe"></span><span class="fusion-element-tooltip"><span class="fusion-tooltip-text">' + fusionBuilderText.global_element + '</span></span></a>' ); } else if ( 'elements' === elementCategory ) { FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"]' ).addClass( 'fusion-global-element' ); FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"] .fusion-builder-module-controls-inner' ).after( '<a href="#" class="fusion-builder-element-global fusion-builder-module-control fusion-builder-unglobal-tooltip" data-cid=' + cid + '><span class="fusiona-globe"></span><span class="fusion-element-tooltip"><span class="fusion-tooltip-text">' + fusionBuilderText.global_element + '</span></span></a>' ); } FusionPageBuilderApp.$el.find( 'div[data-cid="' + cid + '"]' ).attr( 'fusion-global-layout', globalID ); FusionEvents.trigger( 'fusion-element-added' ); FusionPageBuilderApp.saveGlobal = true; // Check for globals. MultiGlobalArgs = { currentModel: elementView.model, handleType: 'save', attributes: elementView.model.attributes }; setTimeout( fusionGlobalManager.handleMultiGlobal, 500, MultiGlobalArgs ); // Save history FusionEvents.trigger( 'fusion-history-save-step', fusionBuilderText.saved + ' ' + fusionAllElements[ elementView.model.get( 'element_type' ) ].name + ' ' + fusionBuilderText.as_global ); if ( 'undefined' !== typeof FusionApp.contentChange ) { FusionApp.contentChange( 'page', 'builder-content' ); } } } } ); } else { alert( fusionBuilderText.please_enter_element_name ); // jshint ignore: line } }, /** * Removes the view. * * @since 2.0.0 * @param {Object} event - The event. * @return {void} */ removeView: function() { this.$el.find( '.fusion-save-element-fields' ).remove(); this.$el.find( '.fusion-builder-modal-top-container' ).prependTo( '#fusion-builder-front-end-library' ); FusionApp.dialogCloseResets( this ); this.remove(); } } ); } ); }( jQuery ) );
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare