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/js/views/ |
Current File : //var/www/web28/html/wp-content/plugins/fusion-builder/js/views/view-element-settings.js |
/* global openShortcodeGenerator, fusionBuilderConfig, ajaxurl, FusionPageBuilderEvents, fusionAllElements, FusionPageBuilderApp, fusionBuilderText, noUiSlider, wNumb, FusionPageBuilderViewManager, AwbTypography */ /* eslint no-unused-vars: 0 */ /* eslint no-shadow: 0 */ /* eslint no-extend-native: 0 */ /* eslint no-alert: 0 */ /* eslint no-empty-function: 0 */ var FusionPageBuilder = FusionPageBuilder || {}; ( function( $ ) { $( document ).ready( function() { FusionPageBuilder.ElementSettingsView = window.wp.Backbone.View.extend( { className: 'fusion_builder_module_settings', template: FusionPageBuilder.template( $( '#fusion-builder-block-module-settings-template' ).html() ), events: { 'click #qt_element_content_fusion_shortcodes_text_mode': 'activateSCgenerator', 'click .option-dynamic-content': 'addDynamicContent', 'click .option-has-state': 'toggleStateOptions', 'click .fusion-state-options li a': 'changeStateOption' }, activateSCgenerator: function( event ) { openShortcodeGenerator( $( event.target ) ); }, initialize: function() { var functionName, params, processedParams; this.listenTo( FusionPageBuilderEvents, 'fusion-modal-view-removed', this.removeElement ); // Manupulate model attributes via custom function if provided by the element if ( 'undefined' !== typeof fusionAllElements[ this.model.get( 'element_type' ) ].on_settings ) { functionName = fusionAllElements[ this.model.get( 'element_type' ) ].on_settings; if ( 'function' === typeof FusionPageBuilderApp[ functionName ] ) { params = this.model.get( 'params' ); processedParams = FusionPageBuilderApp[ functionName ]( params, this ); this.model.set( 'params', processedParams ); } } this.listenTo( FusionPageBuilderEvents, 'fusion-dynamic-data-removed', this.removeDynamicStatus ); this.listenTo( FusionPageBuilderEvents, 'fusion-dynamic-data-added', this.addDynamicStatus ); this.dynamicSelection = false; this.dynamicParams = 'object' === typeof this.options && 'object' === typeof this.options.dynamicParams ? this.options.dynamicParams : false; this.onInit(); }, onInit: function() { }, addDynamicContent: function( event ) { var self = this, $option = jQuery( event.target ).closest( '.fusion-builder-option' ), param = $option.attr( 'data-option-id' ), sameParam = false, viewSettings; if ( this.dynamicSelection ) { if ( param === this.dynamicSelection.model.get( 'param' ) ) { sameParam = true; } this.dynamicSelection.removeView(); } if ( sameParam ) { return; } viewSettings = { model: new FusionPageBuilder.Element( { param: param, option: $option, parent: this } ) }; // On select or cancel or event we destroy. this.dynamicSelection = new FusionPageBuilder.DynamicSelection( viewSettings ); $option.find( '.fusion-dynamic-selection' ).html( this.dynamicSelection.render().el ); }, removeDynamicStatus: function( param ) { this.$el.find( '.fusion-builder-option[data-option-id="' + param + '"]' ).attr( 'data-dynamic', false ); // Needed for dependencies. this.$el.find( '#' + param ).trigger( 'change' ); }, addDynamicStatus: function( param, cid ) { if ( cid === this.dynamicParams.cid ) { this.$el.find( '.fusion-builder-option[data-option-id="' + param + '"]' ).attr( 'data-dynamic', true ); // Needed for dependencies. this.$el.find( '#' + param ).trigger( 'change' ); } }, toggleStateOptions: function( event ) { var $element = jQuery( event.currentTarget ).parent(); $element.toggleClass( 'active-item' ); }, changeStateOption: function( event ) { var $element = jQuery( event.currentTarget ); var $parent = jQuery( event.currentTarget ).closest( '.fusion-states-panel.active-item' ); var $option = jQuery( event.currentTarget ).closest( 'li.fusion-builder-option' ); const state = $element.attr( 'data-indicator' ); const origID = $option.hasClass( 'is-option-state' ) ? $option.attr( 'data-default-state-option' ) : $option.attr( 'data-option-id' ); const param_name = $element.attr( 'data-param_name' ) ? $element.attr( 'data-param_name' ) : `${origID}_${state}`; const $stateOption = $option.parent().find( `[data-option-id=${param_name}]` ); if ( $stateOption.attr( 'data-option-id' ) === $option.attr( 'data-option-id' ) ) { $parent.removeClass( 'active-item' ); return; } $stateOption.addClass( 'state-active' ); const $stateLink = $parent.find( '.option-has-state' ); if ( $stateLink.attr( 'data-connect-state' ) ) { const connectedOptions = $stateLink.attr( 'data-connect-state' ).split( ',' ); connectedOptions.forEach( ( option ) => { $option.siblings( `[data-option-id=${option}], [data-default-state-option=${option}]` ).find( '.fusion-states-panel .fusion-state-options a[data-indicator= ' + state + ']' ).click(); } ); } if ( $stateOption.find( '.fusion-panel-options .option-preview-toggle' ) ) { $stateOption.find( '.fusion-panel-options .option-preview-toggle:not(.active)' ).click(); } if ( 'default' === state ) { // Trun of active preview. $option.find( '.fusion-state-options li a' ).each( function() { const optionName = jQuery( this ).attr( 'data-param_name' ); if ( optionName ) { $option.parent().find( `li.fusion-builder-option[data-option-id=${optionName}] .fusion-panel-options .option-preview-toggle.active` ).click(); } } ); } if ( $option.hasClass( 'is-option-state' ) ) { if ( 'default' === state ) { this.defaultState( event ); } else { $option.removeClass( 'state-active' ); } } else { // eslint-disable-next-line no-lonely-if if ( 'default' !== state ) { $option.addClass( 'state-inactive' ); } } $parent.removeClass( 'active-item' ); }, defaultState: function( event ) { var $option = jQuery( event.currentTarget ).closest( 'li.fusion-builder-option' ); var $defaultOption = $option.parent().find( `[data-option-id=${$option.attr( 'data-default-state-option' )}]` ); $defaultOption.removeClass( 'state-inactive' ); $option.removeClass( 'state-active' ); }, render: function() { var $thisEl = this.$el, atts = this.model.attributes, parentValues; this.beforeRender(); if ( 'object' === typeof this.dynamicParams ) { this.dynamicParams.createBackup(); atts.dynamic_params = this.dynamicParams.getAll(); } $thisEl.html( this.template( { atts: atts } ) ); $thisEl.attr( 'data-cid', this.model.get( 'cid' ) ); // Resposnve options setup. $thisEl.addClass( FusionPageBuilderApp.isFlex( FusionPageBuilderApp.getParentContainer( this.model.get( 'cid' ) ) ) ? 'has-flex' : '' ); $thisEl.addClass( FusionPageBuilderApp.isBlockLayoutColumn( FusionPageBuilderApp.getParentColumn( this.model.get( 'cid' ) ) ) && 'fusion_builder_column' !== this.model.get( 'element_type' ) && 'fusion_builder_column_inner' !== this.model.get( 'element_type' ) ? 'has-block-column' : '' ); $thisEl.attr( 'data-type', this.model.get( 'type' ) ); this.optionInit( $thisEl ); setTimeout( function() { $thisEl.find( 'select, input, textarea, radio' ).filter( ':eq(0)' ).not( '[data-placeholder]' ).focus(); }, 1 ); // Check option dependencies if ( 'undefined' !== typeof this.model && 'undefined' !== typeof this.model.get ) { parentValues = 'undefined' !== typeof this.model.get( 'parent_values' ) ? this.model.get( 'parent_values' ) : false; FusionPageBuilderApp.checkOptionDependency( fusionAllElements[ this.model.get( 'element_type' ) ], $thisEl, parentValues ); } this.onRender(); FusionPageBuilderEvents.trigger( 'fusion-settings-modal-open' ); return this; }, beforeRender: function() { }, onRender: function() { var $contentOption = this.$el.find( 'li[data-option-id="content_layout"]' ), value = 'column'; if ( $contentOption.length ) { value = $contentOption.find( '#content_layout' ).val(); $contentOption.attr( 'data-direction', value ); $contentOption.find( '#content_layout' ).on( 'change', function() { $contentOption.attr( 'data-direction', jQuery( this ).val() ); } ); } }, optionInit: function( $el ) { var $thisEl = $el, self = this, content = '', params = this.model.get( 'params' ), view, $contentTextarea, $contentTextareaOption, $colorPicker, $uploadButton, $iconPicker, $multiselect, $checkboxbuttonset, $radiobuttonset, $value, $id, $container, $search, viewCID, $checkboxsetcontainer, $radiosetcontainer, $subGroup, $subgroupWrapper, $conditionalSelect, $visibility, $choice, $rangeSlider, $i, thisModel, $selectField, textareaID, allowGenerator = false, $dimensionField, codeBlockId, $codeBlock, codeElement, that = this, $textField, $placeholderText, $theContent, fixSettingsLvl = false, parentAtts, $linkButton, $dateTimePicker, $datePicker, $timePicker, $multipleImages, fetchIds = [], parentValues, $repeater, $sortable, $sortableText, $formOptions, $fusionLogics, $connectedSortable, codeMirrorJSON, optionId, $columnWidth, $focusPoint, $nominatimButton, typoSets = {}; thisModel = this.model; // Fix for deprecated 'settings_lvl' attribute if ( 'undefined' !== thisModel.attributes.params.settings_lvl && 'parent' === thisModel.attributes.params.settings_lvl ) { fixSettingsLvl = true; parentAtts = thisModel.attributes.params; } if ( 'undefined' !== typeof thisModel.get && 'undefined' !== typeof thisModel.get( 'allow_generator' ) && true === thisModel.get( 'allow_generator' ) ) { FusionPageBuilderApp.allowShortcodeGenerator = true; } const $tabs = $thisEl.find( '.fusion-tabs' ); // Set parentValues for dependencies on child. parentValues = ( 'undefined' !== typeof this.model.get && 'undefined' !== typeof this.model.get( 'parent_values' ) ) ? this.model.get( 'parent_values' ) : false; $textField = $thisEl.find( '[data-placeholder]' ); $contentTextarea = $thisEl.find( '.fusion-editor-field' ); $colorPicker = $thisEl.find( '.fusion-builder-color-picker-hex' ); $uploadButton = $thisEl.find( '.fusion-builder-upload-button' ); $iconPicker = $thisEl.find( '.fusion-iconpicker' ); $multiselect = $thisEl.find( '.fusion-form-multiple-select' ); $checkboxbuttonset = $thisEl.find( '.fusion-form-checkbox-button-set' ); $radiobuttonset = $thisEl.find( '.fusion-form-radio-button-set' ); $rangeSlider = $thisEl.find( '.fusion-slider-container' ); $selectField = $thisEl.find( '.fusion-select-field:not( .fusion-skip-init )' ); $conditionalSelect = $thisEl.find( '.fusion-select-field[data-conditions]' ); $dimensionField = $thisEl.find( '.single-builder-dimension' ); $codeBlock = $thisEl.find( '.fusion-builder-code-block' ); $linkButton = $thisEl.find( '.fusion-builder-link-button' ); $dateTimePicker = $thisEl.find( '.fusion-datetime.full-picker' ); $datePicker = $thisEl.find( '.fusion-datetime.date-picker' ); $timePicker = $thisEl.find( '.fusion-datetime.time-picker' ); $multipleImages = $thisEl.find( '.fusion-multiple-image-container' ); $repeater = $thisEl.find( '.fusion-builder-option.repeater' ); $sortable = $thisEl.find( '.fusion-builder-option.sortable' ); $sortableText = $thisEl.find( '.fusion-builder-option.sortable_text' ); $connectedSortable = $thisEl.find( '.fusion-builder-option.connected_sortable' ); $columnWidth = $thisEl.find( '.fusion-form-column-width' ); $formOptions = $thisEl.find( '.fusion-form-form-options' ); $fusionLogics = $thisEl.find( '.fusion-builder-option-logics' ); $focusPoint = $thisEl.find( '.fusion-image-focus-point' ); $nominatimButton = $thisEl.find( '.fusion-builder-nominatim-button' ); if ( $textField.length ) { $textField.on( 'focus', function( event ) { if ( jQuery( event.target ).data( 'placeholder' ) === jQuery( event.target ).val() ) { jQuery( event.target ).val( '' ); } } ); } if ( $linkButton.length ) { FusionPageBuilderApp.fusionBuilderActivateLinkSelector( $linkButton ); } if ( $nominatimButton.length ) { FusionPageBuilderApp.fusionBuilderActivateNominatimSearch( $nominatimButton ); } if ( $dateTimePicker.length ) { jQuery( $dateTimePicker ).fusiondatetimepicker( { format: 'yyyy-MM-dd hh:mm:ss' } ); } if ( $datePicker.length ) { jQuery( $datePicker ).fusiondatetimepicker( { format: 'yyyy-MM-dd', pickTime: false } ); } if ( $timePicker.length ) { jQuery( $timePicker ).fusiondatetimepicker( { format: 'hh:mm:ss', pickDate: false } ); } // Dynamic data init. this.optionDynamicData( $thisEl ); if ( $colorPicker.length ) { $colorPicker.each( function() { var self = $( this ), $defaultReset = self.parents( '.fusion-builder-option' ).find( '.fusion-builder-default-reset' ); // Picker with default. $( this ).awbColorPicker(); // Default reset icon, set value to empty. $defaultReset.on( 'click', function( event ) { var dataDefault, $input = jQuery( this ).closest( '.fusion-builder-option' ).find( '.color-picker' ); event.preventDefault(); dataDefault = $input.attr( 'data-default' ) || $input.attr( 'data-default-color' ); // Make the color picker to start from the default color on open. if ( dataDefault ) { $input.val( dataDefault ).trigger( 'change' ); } $input.val( '' ).trigger( 'change' ); } ); } ); } if ( $multipleImages.length ) { $multipleImages.each( function() { var $multipleImageContainer = jQuery( this ), ids; $multipleImageContainer.html( '' ); if ( 'string' !== typeof $multipleImageContainer.parent().find( '#image_ids' ).val() ) { return; } // Set the media dialog box state as 'gallery' if the element is gallery. ids = $multipleImageContainer.parent().find( '#image_ids' ).val().split( ',' ); // Check which attachments exist. jQuery.each( ids, function( index, id ) { if ( '' !== id && 'NaN' !== id ) { // Doesn't exist need to fetch. if ( 'undefined' === typeof wp.media.attachment( id ).get( 'url' ) ) { fetchIds.push( id ); } } } ); // Fetch attachments if neccessary. if ( 0 < fetchIds.length ) { wp.media.query( { post__in: fetchIds, posts_per_page: fetchIds.length } ).more().then( function( response ) { // jshint ignore:line that.renderAttachments( ids, $multipleImageContainer ); } ); } else { that.renderAttachments( ids, $multipleImageContainer ); } } ); } if ( $codeBlock.length ) { $codeBlock.each( function() { var codeBlockLang; if ( 'undefined' === typeof wp.CodeMirror ) { return; } codeBlockId = $( this ).attr( 'id' ); codeElement = $thisEl.find( '#' + codeBlockId ); codeBlockLang = jQuery( this ).data( 'language' ); // Get wp.CodeMirror object json. codeMirrorJSON = $thisEl.find( '.' + codeBlockId ).val(); if ( 'undefined' !== typeof codeMirrorJSON ) { codeMirrorJSON = JSON.parse( codeMirrorJSON ); codeMirrorJSON.lineNumbers = true; } if ( 'undefined' !== typeof codeBlockLang && 'default' !== codeBlockLang ) { codeMirrorJSON.mode = 'text/' + codeBlockLang; } FusionPageBuilderApp.codeEditor = wp.CodeMirror.fromTextArea( codeElement[ 0 ], codeMirrorJSON ); // Refresh editor after initialization setTimeout( function() { FusionPageBuilderApp.codeEditor.refresh(); FusionPageBuilderApp.codeEditor.focus(); }, 100 ); } ); } if ( $dimensionField.length ) { $dimensionField.each( function() { jQuery( this ).find( '.fusion-builder-dimension input' ).on( 'change paste keyup', function() { jQuery( this ).parents( '.single-builder-dimension' ).find( 'input[type="hidden"]' ).val( ( ( jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(1) input' ).val().length ) ? jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(1) input' ).val() : '0px' ) + ' ' + ( ( jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(2) input' ).val().length ) ? jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(2) input' ).val() : '0px' ) + ' ' + ( ( jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(3) input' ).val().length ) ? jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(3) input' ).val() : '0px' ) + ' ' + ( ( jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(4) input' ).val().length ) ? jQuery( this ).parents( '.single-builder-dimension' ).find( 'div:nth-child(4) input' ).val() : '0px' ) ); } ); } ); } if ( $selectField.length ) { // For quick edit. if ( $selectField.closest( '.fusion-builder-option' ).find( '.awb-quick-edit-button' ).length ) { const $quickEditButton = $selectField.closest( '.fusion-builder-option' ).find( '.awb-quick-edit-button' ); // On change. $selectField.select2().on( 'change', function() { var itemValue = jQuery( this ).val(); // Quick edit option update. if ( jQuery( this ).closest( '.fusion-builder-option' ).find( '.awb-quick-edit-button' ).length && ( '0' == itemValue || '' == itemValue ) ) { jQuery( this ).closest( '.fusion-builder-option' ).find( '.awb-quick-edit-button' ).removeClass( 'has-quick-edit' ); } else { jQuery( this ).closest( '.fusion-builder-option' ).find( '.awb-quick-edit-button' ).addClass( 'has-quick-edit' ); } } ); // On click. $quickEditButton.on( 'click', function() { const type = jQuery( this ).data( 'type' ), itemValue = jQuery( this ).closest( '.fusion-builder-option' ).find( 'select' ).val(), items = jQuery( this ).data( 'items' ); let url; if ( 'menu' === type ) { window.open( fusionBuilderConfig.admin_url + 'nav-menus.php?action=edit&menu=' + items[ itemValue ], '_blank' ).focus(); } else { url = 'live' === fusionBuilderConfig.builder_type ? items[ itemValue ] + '?fb-edit=1' : fusionBuilderConfig.admin_url + 'post.php?post=' + itemValue + '&action=edit'; window.open( url, '_blank' ).focus(); } } ); } else { $selectField.select2(); } } if ( $conditionalSelect.length ) { $conditionalSelect.each( function() { var $select = jQuery( this ), conditions = jQuery( this ).data( 'conditions' ), param = jQuery( this ).attr( 'id' ), defaultValue = 'object' === typeof fusionAllElements[ self.model.get( 'element_type' ) ].params[ param ] ? fusionAllElements[ self.model.get( 'element_type' ) ].params[ param ][ 'default' ] : '', value = null; conditions = conditions ? JSON.parse( _.unescape( conditions ) ) : false; if ( false !== conditions ) { if ( 'string' !== typeof conditions.option || 'object' !== typeof conditions.map ) { return; } // Check for value and if param exists. if ( 'undefined' !== params[ conditions.option ] ) { value = params[ conditions.option ]; } else if ( 'object' === typeof fusionAllElements[ self.model.get( 'element_type' ) ].params[ param ] ) { value = fusionAllElements[ self.model.get( 'element_type' ) ].params[ param ][ 'default' ]; } // Param exists and we have value. if ( null !== value ) { // We have accepted values, disable rest. if ( 'object' === typeof conditions.map[ value ] ) { $select.find( 'option' ).prop( 'disabled', true ); _.each( conditions.map[ value ], function( acceptedValue ) { $select.find( 'option[value="' + acceptedValue + '"]' ).prop( 'disabled', false ); } ); } else { $select.find( 'option' ).prop( 'disabled', false ); } // Listen for changes to other option. self.$el.find( '#' + conditions.option ).on( 'change', function() { var value = jQuery( this ).val(); // Find and disable options not valid. if ( 'object' === typeof conditions.map[ value ] ) { $select.find( 'option' ).prop( 'disabled', true ); _.each( conditions.map[ value ], function( acceptedValue ) { $select.find( 'option[value="' + acceptedValue + '"]' ).prop( 'disabled', false ); } ); } else { $select.find( 'option' ).prop( 'disabled', false ); } // If selection is now invalid, reset to default. if ( $select.find( 'option:selected' ).prop( 'disabled' ) ) { $select.val( defaultValue ).trigger( 'change' ); } // Reinit select2 to update appearance. $select.select2(); } ); } } } ); } if ( $columnWidth.length ) { $columnWidth.each( function() { // Init var $colEl = jQuery( this ), value = $colEl.find( '.width-value' ).val(), fractionToDecimal; fractionToDecimal = function( newValue ) { var fraction; if ( ! newValue.includes( '_' ) ) { return 0; } fraction = newValue.split( '_' ); if ( '' === newValue ) { return 0; } return ( parseFloat( fraction[ 0 ] ) / parseFloat( fraction[ 1 ] ) * 100 ).toFixed( 2 ); }; // Check if it's fraction else initialize custom width. if ( ! value || value.includes( '_' ) || 'auto' === value ) { $colEl.find( '.ui-input, .width-custom' ).hide(); $colEl.find( '.ui-button[data-value="' + value + '"]' ).addClass( 'ui-state-active' ); // Update input values. $colEl.find( '.ui-input input' ).val( fractionToDecimal( value ) ); } else { $colEl.find( '.ui-buttons, .width-default' ).hide(); } $colEl.on( 'click', '.column-width-toggle', function() { $colEl.find( '.ui-input, .ui-buttons, a .label' ).toggle(); } ); $colEl.on( 'click', '.ui-button', function() { var $widthBtn = jQuery( this ), width = $widthBtn.data( 'value' ); // Update input values. $colEl.find( '.ui-input input' ).val( fractionToDecimal( width ) ); $colEl.find( '.ui-button' ).removeClass( 'ui-state-active' ); $widthBtn.addClass( 'ui-state-active' ); $colEl.find( '.width-value' ).val( $widthBtn.data( 'value' ) ); } ); $colEl.on( 'change', '.ui-input input', function() { var $widthInput = jQuery( this ), width = $widthInput.val(); $colEl.find( '.ui-button' ).removeClass( 'ui-state-active' ); $colEl.find( '.width-value' ).val( width ); } ); } ); } if ( $thisEl.find( '.fusion-builder-option.typography' ).length ) { if ( 'undefined' === typeof window.awbTypographySelect || 'undefined' === typeof window.awbTypographySelect.webfonts ) { jQuery.when( window.awbTypographySelect.getWebFonts() ).done( function() { $thisEl.find( '.fusion-builder-option.typography' ).each( function() { typoSets[ jQuery( this ).attr( 'data-option-id' ) ] = new AwbTypography( jQuery( this )[ 0 ], self ); } ); } ); } else { $thisEl.find( '.fusion-builder-option.typography' ).each( function() { typoSets[ jQuery( this ).attr( 'data-option-id' ) ] = new AwbTypography( jQuery( this )[ 0 ], self ); } ); } } if ( $uploadButton.length ) { FusionPageBuilderApp.FusionBuilderActivateUpload( $uploadButton ); } if ( $iconPicker.length ) { $iconPicker.each( function() { var $picker = jQuery( this ); $value = $picker.find( '.fusion-iconpicker-input' ).val(); $id = $picker.find( '.fusion-iconpicker-input' ).attr( 'id' ); $container = $picker.find( '.icon_select_container' ); $search = $picker.find( '.fusion-icon-search' ); FusionPageBuilderApp.fusion_builder_iconpicker( $value, $id, $container, $search ); } ); } if ( $multiselect.length ) { $multiselect.each( function() { $placeholderText = fusionBuilderText.select_options_or_leave_blank_for_all; if ( -1 !== jQuery( this ).attr( 'id' ).indexOf( 'cat_slug' ) || -1 !== jQuery( this ).attr( 'id' ).indexOf( 'category' ) ) { $placeholderText = fusionBuilderText.select_categories_or_leave_blank_for_all; } else if ( -1 !== jQuery( this ).attr( 'id' ).indexOf( 'exclude_cats' ) ) { $placeholderText = fusionBuilderText.select_categories_or_leave_blank_for_none; } else if ( -1 !== jQuery( this ).attr( 'id' ).indexOf( 'social_share_links' ) ) { $placeholderText = fusionBuilderText.select_or_leave_blank_for_global; } jQuery( this ).select2( { placeholder: $placeholderText } ); } ); } if ( $checkboxbuttonset.length ) { // For the visibility option check if choice is no or yes then convert to new style $visibility = $thisEl.find( '.fusion-form-checkbox-button-set.hide_on_mobile' ); if ( $visibility.length ) { $choice = $visibility.find( '.button-set-value' ).val(); if ( 'no' === $choice || '' === $choice ) { $visibility.find( 'a' ).addClass( 'ui-state-active' ); } if ( 'yes' === $choice ) { $visibility.find( 'a:not([data-value="small-visibility"])' ).addClass( 'ui-state-active' ); } } $checkboxbuttonset.find( 'a' ).on( 'click', function( e ) { e.preventDefault(); $checkboxsetcontainer = jQuery( this ).parents( '.fusion-form-checkbox-button-set' ); jQuery( this ).toggleClass( 'ui-state-active' ); $checkboxsetcontainer.find( '.button-set-value' ).val( $checkboxsetcontainer.find( '.ui-state-active' ).map( function( _, el ) { return jQuery( el ).data( 'value' ); } ).get() ).trigger( 'change' ); } ); } if ( $radiobuttonset.length ) { $radiobuttonset.each( function () { const hasSubGroup = jQuery( this ).closest( '.fusion-builder-option.subgroup' ).length; if ( hasSubGroup ) { const itemsLength = jQuery( this ).find( '.buttonset-item' ).length; if ( 4 < itemsLength ) { jQuery( this ).addClass( 'backend-icons-only' ); } else { jQuery( this ).removeClass( 'backend-icons-only' ); } } } ); $radiobuttonset.find( 'a' ).on( 'click', function( e ) { e.preventDefault(); $radiosetcontainer = jQuery( this ).parents( '.fusion-form-radio-button-set' ); $subGroup = $radiosetcontainer.closest( '.fusion-builder-option.subgroup' ); optionId = $subGroup.attr( 'data-option-id' ); $radiosetcontainer.find( '.ui-state-active' ).removeClass( 'ui-state-active' ); jQuery( this ).addClass( 'ui-state-active' ); $radiosetcontainer.find( '.button-set-value' ).val( $radiosetcontainer.find( '.ui-state-active' ).data( 'value' ) ).trigger( 'change' ); if ( $subGroup.length ) { $subgroupWrapper = $subGroup.parent(); $subgroupWrapper.find( '.fusion-subgroup-content[data-group="' + optionId + '"]' ).removeClass( 'active' ); $subgroupWrapper.find( '.fusion-subgroup-' + $radiosetcontainer.find( '.ui-state-active' ).data( 'value' ) + '[data-group="' + optionId + '"]' ).addClass( 'active' ); } } ); // Radio buttons soft dependencies. for now its check single dependency support == and != operators only. if ( $radiobuttonset.find( 'a[data-dependency]' ).length ) { $radiobuttonset.find( 'a[data-dependency]' ).each( function() { const prop = jQuery( this ).data( 'dependency' ); const value = jQuery( this ).data( 'dependency-value' ); const operator = jQuery( this ).data( 'dependency-operator' ) || '=='; const currentValue = $tabs.find( `input#${prop}` ).val(); if ( '==' === operator ) { if ( currentValue == value ) { jQuery( this ).show(); } else { jQuery( this ).hide(); } } if ( '!=' === operator ) { if ( currentValue != value ) { jQuery( this ).show(); } else { jQuery( this ).hide(); } } } ); } } // Radio buttons soft dependencies. on value change. if ( $tabs.find( '.fusion-form-radio-button-set a[data-dependency]' ).length ) { $tabs.find( '.fusion-form-radio-button-set a[data-dependency]' ).each( function() { const $btn = jQuery( this ); const prop = jQuery( this ).data( 'dependency' ); const value = jQuery( this ).data( 'dependency-value' ); const operator = jQuery( this ).data( 'dependency-operator' ) || '=='; $tabs.find( 'input#' + prop ).on( 'change', function() { const currentValue = jQuery( this ).val(); if ( '==' === operator ) { if ( currentValue == value ) { $btn.show(); } else { $btn.hide(); } } if ( '!=' === operator ) { if ( currentValue != value ) { $btn.show(); } else { $btn.hide(); } } } ); } ); } // Init sortable. if ( $sortable.length ) { FusionPageBuilderApp.fusion_builder_sortable( $sortable ); } // Init sort-able text. if ( $sortableText.length ) { FusionPageBuilderApp.fusion_builder_sortable_text( $sortableText ); } // Init form options. if ( $formOptions.length ) { FusionPageBuilderApp.fusion_builder_form_options( $formOptions ); } // Init form logics. if ( $fusionLogics.length ) { $fusionLogics.each( function() { FusionPageBuilderApp.fusion_builder_logics( jQuery( this ) ); } ); } // Init connected sortable. if ( $connectedSortable.length ) { FusionPageBuilderApp.fusion_builder_connected_sortable( $connectedSortable ); } // Init image focus point if ( $focusPoint.length ) { const model = this.model; $focusPoint.each( function() { var point = jQuery( this ).find( '.point' ); var field = jQuery( this ).find( 'input.fusion-builder-focus-point-field' ); var preview = jQuery( this ).find( '.preview' ); var previewImg = preview.find( '.image' ); var placeHolder = preview.find( '.no-image-holder' ); var paramName = previewImg.data( 'image' ); var uploadField = $thisEl.find( `[data-option-id="${previewImg.data( 'image' )}"]` ); var image = uploadField.find( '.fusion-builder-upload-preview img' ); var imageValue = model.attributes.params[ paramName ]; var dynamicData = model.attributes.params.dynamic_params; if ( dynamicData ) { dynamicData = FusionPageBuilderApp.base64Decode( dynamicData ); } if ( dynamicData && '' !== dynamicData[ paramName ] ) { imageValue = false; } if ( imageValue ) { placeHolder.hide(); previewImg.show(); previewImg.append( image.clone() ); } else { previewImg.hide(); placeHolder.show(); } FusionPageBuilderEvents.on( 'awb-image-upload-url-' + previewImg.data( 'image' ), function( url ) { if ( url ) { image = '<img src="' + url + '" alt="">'; previewImg.find( 'img' ).remove(); previewImg.append( image ); previewImg.show(); placeHolder.hide(); } else { previewImg.find( 'img' ).remove(); previewImg.hide(); placeHolder.show(); } } ); point.draggable( { containment: 'parent', scroll: false, snap: '.position-point', snapMode: 'inner', snapTolerance: 10, drag: function () { var pointEl = jQuery( this ); var top = parseInt( 100 * parseFloat( pointEl.css( 'top' ) ) / parseFloat( pointEl.parent().height() ) ); var left = parseInt( 100 * parseFloat( pointEl.css( 'left' ) ) / parseFloat( pointEl.parent().width() ) ); field.val( `${left}% ${top}%` ).trigger( 'change' ); }, stop: function () { var pointEl = jQuery( this ); var top = parseInt( 100 * parseFloat( pointEl.css( 'top' ) ) / parseFloat( pointEl.parent().height() ) ); var left = parseInt( 100 * parseFloat( pointEl.css( 'left' ) ) / parseFloat( pointEl.parent().width() ) ); field.val( `${left}% ${top}%` ).trigger( 'change' ); } } ).css( 'position', 'absolute' ); $thisEl.find( '.position-point' ).on( 'click', function( event ) { var top = '50%', left = '50%'; event.preventDefault(); const el = jQuery( this ); if ( el.hasClass( 'top-left' ) ) { top = 0; left = 0; } if ( el.hasClass( 'top-center' ) ) { top = 0; left = '50%'; } if ( el.hasClass( 'top-right' ) ) { top = 0; left = '100%'; } if ( el.hasClass( 'center-left' ) ) { top = '50%'; left = 0; } if ( el.hasClass( 'center-center' ) ) { top = '50%'; left = '50%'; } if ( el.hasClass( 'center-right' ) ) { top = '50%'; left = '100%'; } if ( el.hasClass( 'bottom-left' ) ) { top = '100%'; left = 0; } if ( el.hasClass( 'bottom-center' ) ) { top = '100%'; left = '50%'; } if ( el.hasClass( 'bottom-right' ) ) { top = '100%'; left = '100%'; } point.css( { top, left } ); field.val( `${left} ${top}` ).trigger( 'change' ); } ); } ); } // Fusion Form label update. if ( this.model.get( 'element_type' ).includes( 'fusion_form_' ) ) { setTimeout( function() { var elem = $thisEl.find( 'input[name="label"]' )[ 0 ], elemLen, oSel; if ( elem ) { elemLen = elem.value.length; // For IE Only if ( document.selection ) { // Set focus elem.focus(); // Use IE Ranges oSel = document.selection.createRange(); // Reset position to 0 & then set at end oSel.moveStart( 'character', -elemLen ); oSel.moveStart( 'character', elemLen ); oSel.moveEnd( 'character', 0 ); oSel.select(); } else if ( elem.selectionStart || '0' == elem.selectionStart ) { // Firefox/Chrome elem.selectionStart = elemLen; elem.selectionEnd = elemLen; elem.focus(); } // if } }, 200 ); $thisEl.on( 'change', '[name="label"]', function( event ) { var label = ( event.target && event.target.value ) || ''; var $name = jQuery( this ).parents().siblings( '[data-option-id="name"]' ).find( 'input' ); if ( '' === $name.val() && label ) { $name.val( self.fusionSanitize( label ) ); } } ); $thisEl.on( 'keydown', '[name="name"], [name$="field_name"]', function( e ) { var c = e.which; var ascii = { '109': '45', '173': '45', '186': '59', '189': '45' }; if ( ascii.hasOwnProperty( c ) ) { c = ascii[ c ]; } if ( ( 65 <= c && 90 >= c ) || ( !e.shiftKey && 48 <= c && 57 >= c ) || 45 == c || ( e.shiftKey && 59 == c ) || 8 == c || ( 37 <= c && 40 >= c ) ) { return; } return e.preventDefault(); } ); } function createSlider( $slide, $targetId, $rangeInput, $min, $max, $step, $value, $decimals, $rangeDefault, $hiddenValue, $defaultValue, $direction ) { // Create slider with values passed on in data attributes. var $slider = noUiSlider.create( $rangeSlider[ $slide ], { start: [ $value ], step: $step, direction: $direction, range: { min: $min, max: $max }, format: wNumb( { decimals: $decimals } ) } ), $notFirst = false; // Check if default is currently set. if ( $rangeDefault && '' === $hiddenValue.val() ) { $rangeDefault.parent().addClass( 'checked' ); } // If this range has a default option then if checked set slider value to data-value. if ( $rangeDefault ) { $rangeDefault.on( 'click', function( e ) { e.preventDefault(); $rangeSlider[ $slide ].noUiSlider.set( $defaultValue ); $hiddenValue.val( '' ); jQuery( this ).parent().addClass( 'checked' ); } ); } // On slider move, update input $slider.on( 'update', function( values, handle ) { if ( $rangeDefault && $notFirst ) { $rangeDefault.parent().removeClass( 'checked' ); $hiddenValue.val( values[ handle ] ); } // Not needed on init, value is already set in template. if ( true === $notFirst ) { jQuery( this.target ).closest( '.fusion-slider-container' ).prev().val( values[ handle ] ).trigger( 'change' ); } $thisEl.find( '#' + $targetId ).trigger( 'change' ); $notFirst = true; } ); // On manual input change, update slider position. $rangeInput.on( 'blur', function( event ) { // If slider already has value, do nothing. if ( this.value === $rangeSlider[ $slide ].noUiSlider.get() ) { return; } // This triggers 'update' event. if ( $min <= this.value && $max >= this.value ) { $rangeSlider[ $slide ].noUiSlider.set( this.value ); } else if ( $min > this.value ) { $rangeSlider[ $slide ].noUiSlider.set( $min ); } else if ( $max < this.value ) { $rangeSlider[ $slide ].noUiSlider.set( $max ); } } ); } if ( $rangeSlider.length ) { // Counter variable for sliders $i = 0; // Method for retreiving decimal places from step Number.prototype.countDecimals = function() { if ( Math.floor( this.valueOf() ) === this.valueOf() ) { return 0; } return this.toString().split( '.' )[ 1 ].length || 0; }; // Each slider on page, determine settings and create slider $rangeSlider.each( function() { var $targetId = jQuery( this ).data( 'id' ), $rangeInput = jQuery( this ).prev( '.fusion-slider-input' ), $min = jQuery( this ).data( 'min' ), $max = jQuery( this ).data( 'max' ), $step = jQuery( this ).data( 'step' ), $direction = jQuery( this ).data( 'direction' ), $value = $rangeInput.val(), $decimals = $step.countDecimals(), $rangeDefault = ( jQuery( this ).parents( '.fusion-builder-option' ).find( '.fusion-range-default' ).length ) ? jQuery( this ).parents( '.fusion-builder-option' ).find( '.fusion-range-default' ) : false, $hiddenValue = ( $rangeDefault ) ? jQuery( this ).parent().find( '.fusion-hidden-value' ) : false, $defaultValue = ( $rangeDefault ) ? jQuery( this ).parents( '.fusion-builder-option' ).find( '.fusion-range-default' ).data( 'default' ) : false; // Check if parent has another value set to override TO default. if ( 'undefined' !== typeof parentValues && 'undefined' !== typeof parentValues[ $targetId ] && $rangeDefault ) { // Set default values to new value. jQuery( this ).parents( '.fusion-builder-option' ).find( '.fusion-range-default' ).data( 'default', parentValues[ $targetId ] ); $defaultValue = parentValues[ $targetId ]; // If no current value is set, also update $value as representation on load. if ( ! $hiddenValue || '' === $hiddenValue.val() ) { $value = $defaultValue; } } createSlider( $i, $targetId, $rangeInput, $min, $max, $step, $value, $decimals, $rangeDefault, $hiddenValue, $defaultValue, $direction ); $i++; } ); } // TODO: fix for WooCommerce element. if ( 'undefined' !== typeof this.model.get && 'fusion_woo_shortcodes' === this.model.get( 'element_type' ) ) { if ( true === FusionPageBuilderApp.shortcodeGenerator ) { $thisEl.find( '#element_content' ).attr( 'id', 'generator_element_content' ); } } // If there is tiny mce editor ( tinymce element option ) if ( $contentTextarea.length ) { $contentTextareaOption = $contentTextarea.closest( '.fusion-builder-option' ); // Multi element ( parent ) if ( 'undefined' !== typeof this.model.get( 'multi' ) && 'multi_element_parent' === this.model.get( 'multi' ) ) { viewCID = FusionPageBuilderViewManager.generateCid(); this.view_cid = viewCID; $contentTextareaOption.hide(); $contentTextarea.attr( 'id', 'fusion_builder_content_main' ); view = new FusionPageBuilder.MultiElementSortablesView( { model: this, el: this.$el.find( '.fusion-builder-option-advanced-module-settings' ), attributes: { cid: viewCID, parentCid: this.model.get( 'cid' ) } } ); FusionPageBuilderViewManager.addView( viewCID, view ); $contentTextareaOption.before( view.render() ); if ( '' !== $contentTextarea.html() ) { view.generateMultiElementChildSortables( $contentTextarea.html(), $thisEl.find( '.fusion-builder-option-advanced-module-settings' ).data( 'element_type' ), fixSettingsLvl, parentAtts ); } // Standard element } else { content = $contentTextarea.html(); // Called from shortcode generator if ( true === FusionPageBuilderApp.shortcodeGenerator ) { // TODO: unique id ( multiple mce ) if ( true === FusionPageBuilderApp.shortcodeGeneratorMultiElementChild ) { $contentTextarea.attr( 'id', 'generator_multi_child_content' ); } else { $contentTextarea.attr( 'id', 'generator_element_content' ); } textareaID = $contentTextarea.attr( 'id' ); setTimeout( function() { $contentTextarea.wp_editor( content, textareaID ); // If it is a placeholder, add an on focus listener. if ( jQuery( '#' + textareaID ).data( 'placeholder' ) ) { window.tinyMCE.get( textareaID ).on( 'focus', function( event ) { const textareaHadFocus = jQuery( event.target.targetElm ).hasClass( 'awb-had-focus' ), switchButtonInputHadFocus = jQuery( event.target.targetElm ).closest( '#wp-' + textareaID + '-wrap' ).prev().hasClass( 'awb-had-focus' ); $theContent = window.tinyMCE.get( textareaID ).getContent(); $theContent = jQuery( '<div/>' ).html( $theContent ).text(); // The flags make sure that laceholder content isn't wiped out through WP's efault behaviour. if ( $theContent === jQuery( '#' + textareaID ).data( 'placeholder' ) && ( ( ! textareaHadFocus && ! switchButtonInputHadFocus ) || ( textareaHadFocus && switchButtonInputHadFocus ) ) ) { window.tinyMCE.get( textareaID ).setContent( '' ); } if ( ! jQuery( event.target.targetElm ).hasClass( 'awb-had-focus' ) ) { jQuery( event.target.targetElm ).addClass( 'awb-had-focus' ); } } ); } }, 100 ); } else { textareaID = $contentTextarea.attr( 'id' ); setTimeout( function() { if ( 'undefined' !== typeof thisModel.get( 'allow_generator' ) && true === thisModel.get( 'allow_generator' ) ) { allowGenerator = true; } $contentTextarea.wp_editor( content, textareaID, allowGenerator ); // If it is a placeholder, add an on focus listener. if ( jQuery( '#' + textareaID ).data( 'placeholder' ) ) { window.tinyMCE.get( textareaID ).on( 'focus', function( event ) { const textareaHadFocus = jQuery( event.target.targetElm ).hasClass( 'awb-had-focus' ), switchButtonInputHadFocus = jQuery( event.target.targetElm ).closest( '#wp-' + textareaID + '-wrap' ).prev().hasClass( 'awb-had-focus' ); $theContent = window.tinyMCE.get( textareaID ).getContent(); $theContent = jQuery( '<div/>' ).html( $theContent ).text(); // The flags make sure that laceholder content isn't wiped out through WP's efault behaviour. if ( $theContent === jQuery( '#' + textareaID ).data( 'placeholder' ) && ( ( ! textareaHadFocus && ! switchButtonInputHadFocus ) || ( textareaHadFocus && switchButtonInputHadFocus ) ) ) { window.tinyMCE.get( textareaID ).setContent( '' ); } if ( ! jQuery( event.target.targetElm ).hasClass( 'awb-had-focus' ) ) { jQuery( event.target.targetElm ).addClass( 'awb-had-focus' ); } } ); } }, 100 ); } } } // Init repeaters last. if ( $repeater.length ) { $repeater.each( function() { that.initRepeater( jQuery( this ) ); } ); } // Attachment upload alert. $thisEl.find( '.uploadattachment .fusion-builder-upload-button' ).on( 'click', function() { alert( fusionBuilderText.to_add_images ); } ); this.initAjaxSelects(); // Range option preview FusionPageBuilderApp.rangeOptionPreview( $thisEl ); }, initAjaxSelects: function() { if ( 'undefined' === typeof ajaxurl ) { ajaxurl = fusionBuilderConfig.ajaxurl; // eslint-disable-line no-native-reassign, no-global-assign } this.$el.find( '.fusion-ajax-select' ).each( function() { var $select, ajax, ajaxParams, labels, initAjaxSelect, maxInput; $select = jQuery( this ); ajax = $select.data( 'ajax' ); maxInput = $select.data( 'max-input' ); ajaxParams = $select.siblings( '.params' ).val(); labels = $select.siblings( '.initial-values' ).val(); labels = labels ? JSON.parse( _.unescape( labels ) ) : []; ajaxParams = ajaxParams ? JSON.parse( _.unescape( ajaxParams ) ) : []; initAjaxSelect = function() { var ajaxSelect = $select.select2( { width: '100%', delay: 250, minimumInputLength: 3, maximumSelectionLength: maxInput, ajax: { url: ajaxurl, dataType: 'json', data: function ( params ) { return { action: ajax, search: params.term, params: ajaxParams, fusion_po_nonce: jQuery( '#fusion-page-options-nonce' ).val() }; } } } ); if ( 'undefined' !== typeof ajaxSelect.data( 'select2' ).dropdown ) { if ( 'undefined' !== typeof ajaxSelect.data( 'select2' ).dropdown.$dropdown ) { ajaxSelect.data( 'select2' ).dropdown.$dropdown.addClass( 'avada-select2' ); } else if ( 'undefined' !== typeof ajaxSelect.data( 'select2' ).dropdown.selector ) { jQuery( ajaxSelect.data( 'select2' ).dropdown.selector ).addClass( 'avada-select2' ); } } ajaxSelect.data( 'select2' ).on( 'results:message', function() { this.dropdown._resizeDropdown(); this.dropdown._positionDropdown(); } ); }; // If there are initial values get labels else init ajax-select. if ( labels ) { $select.addClass( 'loading' ); jQuery.post( ajaxurl, { action: ajax, labels: labels, params: ajaxParams, fusion_po_nonce: jQuery( '#fusion-page-options-nonce' ).val() }, function( data ) { data = JSON.parse( data ); labels = data.labels || []; _.each( labels, function( label ) { $select.append( '<option value="' + label.id + '" selected="selected">' + label.text + '</option>' ); } ); $select.removeClass( 'loading' ); initAjaxSelect(); } ); } else { initAjaxSelect(); } } ); }, beforeRemove: function() { }, removeElement: function() { this.beforeRemove(); // Remove settings modal on save or close/cancel this.remove(); }, initRepeater: function( $element ) { var self = this, param = $element.data( 'option-id' ), option = fusionAllElements[ this.model.get( 'element_type' ) ].params[ param ], fields = 'undefined' !== typeof option ? option.fields : {}, params = this.model.get( 'params' ), values = 'undefined' !== typeof params[ param ] ? params[ param ] : '', $target = $element.find( '.repeater-rows' ), rowTitle = 'undefined' !== typeof option ? option.row_title : false, rows = false; if ( 'string' === typeof values && '' !== values ) { try { if ( FusionPageBuilderApp.base64Encode( FusionPageBuilderApp.base64Decode( values ) ) === values ) { values = FusionPageBuilderApp.base64Decode( values ); values = _.unescape( values ); values = JSON.parse( values ); rows = true; } } catch ( e ) { console.warn( 'Something went wrong! Error triggered - ' + e ); } } else if ( ! option.skip_empty_row ) { self.createRepeaterRow( fields, {}, $target, rowTitle ); } // Create the rows for existing values. if ( 'object' === typeof values && rows ) { _.each( values, function( field, index ) { self.createRepeaterRow( fields, values[ index ], $target, rowTitle ); } ); } // Repeater row add click event. $element.on( 'click', '.repeater-row-add', function( event ) { event.preventDefault(); self.createRepeaterRow( fields, {}, $target, rowTitle ); } ); // Repeater row remove click event. $element.on( 'click', '.repeater-row-remove', function( event ) { event.preventDefault(); jQuery( this ).parents( '.repeater-row' ).first().remove(); } ); $element.on( 'click', '.repeater-title', function() { jQuery( this ).parent().find( '.repeater-fields' ).slideToggle( 300 ); if ( jQuery( this ).find( '.repeater-toggle-icon' ).hasClass( 'fusiona-plus2' ) ) { jQuery( this ).find( '.repeater-toggle-icon' ).removeClass( 'fusiona-plus2' ).addClass( 'fusiona-minus' ); } else { jQuery( this ).find( '.repeater-toggle-icon' ).removeClass( 'fusiona-minus' ).addClass( 'fusiona-plus2' ); } } ); $element.sortable( { handle: '.repeater-title', items: '.repeater-row', cursor: 'move', cancel: '.repeater-row-remove', update: function() { } } ); }, createRepeaterRow: function( fields, values, $target, rowTitle ) { var $html = '', attributes = {}, repeater = FusionPageBuilder.template( jQuery( '#fusion-app-repeater-fields' ).html() ), depFields = {}, value; rowTitle = 'undefined' !== typeof rowTitle && rowTitle ? rowTitle : 'Repeater Row'; $html += '<div class="repeater-row">'; $html += '<div class="repeater-title">'; $html += '<span class="repeater-toggle-icon fusiona-plus2"></span>'; $html += '<h3>' + rowTitle + '</h3>'; $html += '<span class="repeater-row-remove fusiona-plus2"></span>'; $html += '</div>'; $html += '<ul class="repeater-fields">'; _.each( fields, function( field ) { value = values[ field.param_name ]; depFields[ field.param_name ] = field; attributes = { field: field, value: value }; $html += jQuery( repeater( attributes ) ).html(); } ); $html += '</ul>'; $html += '</div>'; this.optionInit( $target.append( $html ).children( 'div:last-child' ) ); // Check option dependencies if ( 'undefined' !== typeof this.model && 'undefined' !== typeof this.model.get ) { FusionPageBuilderApp.checkOptionDependency( fusionAllElements[ this.model.get( 'element_type' ) ], $target.children( 'div:last-child' ), false, depFields, this.$el ); } }, renderAttachments: function( ids, $multipleImageContainer ) { var $imageHTML, attachment, imageSizes, thumbnail, image; if ( 0 < ids.length ) { jQuery.each( ids, function( index, id ) { if ( '' !== id && 'NaN' !== id ) { attachment = wp.media.attachment( id ); imageSizes = attachment.get( 'sizes' ); if ( 'undefined' !== typeof imageSizes[ '200' ] ) { image = imageSizes[ '200' ].url; } else if ( 'undefined' !== typeof imageSizes.thumbnail ) { image = imageSizes.thumbnail.url; } else { image = attachment.get( 'url' ); } $imageHTML = '<div class="fusion-multi-image" data-image-id="' + attachment.get( 'id' ) + '">'; $imageHTML += '<img src="' + image + '"/>'; $imageHTML += '<span class="fusion-multi-image-remove dashicons dashicons-no-alt"></span>'; $imageHTML += '</div>'; $multipleImageContainer.append( $imageHTML ); } } ); } }, fusionSanitize: function( str ) { var map = { 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ý': 'Y', 'ß': 's', 'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ý': 'y', 'ÿ': 'y', 'Ā': 'A', 'ā': 'a', 'Ă': 'A', 'ă': 'a', 'Ą': 'A', 'ą': 'a', 'Ć': 'C', 'ć': 'c', 'Ĉ': 'C', 'ĉ': 'c', 'Ċ': 'C', 'ċ': 'c', 'Č': 'C', 'č': 'c', 'Ď': 'D', 'ď': 'd', 'Đ': 'D', 'đ': 'd', 'Ē': 'E', 'ē': 'e', 'Ĕ': 'E', 'ĕ': 'e', 'Ė': 'E', 'ė': 'e', 'Ę': 'E', 'ę': 'e', 'Ě': 'E', 'ě': 'e', 'Ĝ': 'G', 'ĝ': 'g', 'Ğ': 'G', 'ğ': 'g', 'Ġ': 'G', 'ġ': 'g', 'Ģ': 'G', 'ģ': 'g', 'Ĥ': 'H', 'ĥ': 'h', 'Ħ': 'H', 'ħ': 'h', 'Ĩ': 'I', 'ĩ': 'i', 'Ī': 'I', 'ī': 'i', 'Ĭ': 'I', 'ĭ': 'i', 'Į': 'I', 'į': 'i', 'İ': 'I', 'ı': 'i', 'IJ': 'IJ', 'ij': 'ij', 'Ĵ': 'J', 'ĵ': 'j', 'Ķ': 'K', 'ķ': 'k', 'Ĺ': 'L', 'ĺ': 'l', 'Ļ': 'L', 'ļ': 'l', 'Ľ': 'L', 'ľ': 'l', 'Ŀ': 'L', 'ŀ': 'l', 'Ł': 'l', 'ł': 'l', 'Ń': 'N', 'ń': 'n', 'Ņ': 'N', 'ņ': 'n', 'Ň': 'N', 'ň': 'n', 'ʼn': 'n', 'Ō': 'O', 'ō': 'o', 'Ŏ': 'O', 'ŏ': 'o', 'Ő': 'O', 'ő': 'o', 'Œ': 'OE', 'œ': 'oe', 'Ŕ': 'R', 'ŕ': 'r', 'Ŗ': 'R', 'ŗ': 'r', 'Ř': 'R', 'ř': 'r', 'Ś': 'S', 'ś': 's', 'Ŝ': 'S', 'ŝ': 's', 'Ş': 'S', 'ş': 's', 'Š': 'S', 'š': 's', 'Ţ': 'T', 'ţ': 't', 'Ť': 'T', 'ť': 't', 'Ŧ': 'T', 'ŧ': 't', 'Ũ': 'U', 'ũ': 'u', 'Ū': 'U', 'ū': 'u', 'Ŭ': 'U', 'ŭ': 'u', 'Ů': 'U', 'ů': 'u', 'Ű': 'U', 'ű': 'u', 'Ų': 'U', 'ų': 'u', 'Ŵ': 'W', 'ŵ': 'w', 'Ŷ': 'Y', 'ŷ': 'y', 'Ÿ': 'Y', 'Ź': 'Z', 'ź': 'z', 'Ż': 'Z', 'ż': 'z', 'Ž': 'Z', 'ž': 'z', 'ſ': 's', 'ƒ': 'f', 'Ơ': 'O', 'ơ': 'o', 'Ư': 'U', 'ư': 'u', 'Ǎ': 'A', 'ǎ': 'a', 'Ǐ': 'I', 'ǐ': 'i', 'Ǒ': 'O', 'ǒ': 'o', 'Ǔ': 'U', 'ǔ': 'u', 'Ǖ': 'U', 'ǖ': 'u', 'Ǘ': 'U', 'ǘ': 'u', 'Ǚ': 'U', 'ǚ': 'u', 'Ǜ': 'U', 'ǜ': 'u', 'Ǻ': 'A', 'ǻ': 'a', 'Ǽ': 'AE', 'ǽ': 'ae', 'Ǿ': 'O', 'ǿ': 'o', 'α': 'a', 'Α': 'A', 'β': 'v', 'Β': 'V', 'γ': 'g', 'Γ': 'G', 'δ': 'd', 'Δ': 'D', 'ε': 'e', 'Ε': 'E', 'ζ': 'z', 'Ζ': 'Z', 'η': 'i', 'Η': 'I', 'θ': 'th', 'Θ': 'TH', 'ι': 'i', 'Ι': 'I', 'κ': 'k', 'Κ': 'K', 'λ': 'l', 'Λ': 'L', 'μ': 'm', 'Μ': 'M', 'ν': 'n', 'Ν': 'N', 'ξ': 'ks', 'Ξ': 'KS', 'ο': 'o', 'Ο': 'O', 'π': 'p', 'Π': 'P', 'ρ': 'r', 'Ρ': 'R', 'σ': 's', 'Σ': 'S', 'ς': 's', 'τ': 't', 'Τ': 'T', 'υ': 'y', 'Υ': 'Y', 'φ': 'f', 'Φ': 'F', 'χ': 'x', 'Χ': 'X', 'ψ': 'ps', 'Ψ': 'PS', 'ω': 'o', 'Ω': 'O', ' ': '_', '\'': '', '?': '', '/': '', '\\': '', '.': '', ',': '', '`': '', '>': '', '<': '', '"': '', '[': '', ']': '', '|': '', '{': '', '}': '', '(': '', ')': '' }, nonWord = /\W/g, mapping = function ( c ) { return ( map[ c ] !== undefined ) ? map[ c ] : c; }; return str.replace( nonWord, mapping ).toLowerCase(); } } ); _.extend( FusionPageBuilder.ElementSettingsView.prototype, FusionPageBuilder.options.fusionDynamicData ); } ); }( jQuery ) );
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare