123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- (function($){
- /**
- * Handles custom logic for the settings forms of the
- * post modules.
- *
- * @class FLThemeBuilderPostModuleSettings
- * @since 1.0
- */
- FLThemeBuilderPostModuleSettings = {
- /**
- * Cached settings used to replace the current settings
- * if the post layout changes are canceled.
- *
- * @since 1.0
- * @access private
- * @property {String} _previousSettings
- */
- _previousSettings: null,
- /**
- * Initialize.
- *
- * @since 1.0
- * @access private
- * @method _init
- */
- _init: function()
- {
- FLBuilder.addHook( 'settings-form-init', $.proxy( this._loaded, this ) );
- },
- /**
- * Fires when the settings form has loaded.
- *
- * @since 1.0
- * @access private
- * @method _loaded
- */
- _loaded: function()
- {
- if ( $( '.fl-builder-post-grid-settings:visible' ).length > 0 ) {
- this._bindMainSettings();
- } else if ( $( '[data-type="custom_post_layout"]:visible' ).length > 0 ) {
- this._bindCustomPostLayoutSettings();
- }
- },
- /**
- * Bind events to the main settings lightbox.
- *
- * @since 1.0
- * @access _bindMainSettings
- * @method _bind
- */
- _bindMainSettings: function()
- {
- this._layoutChanged();
- this._postLayoutChanged();
- $( 'select[name=layout]' ).on( 'change', this._layoutChanged );
- $( 'select[name=post_layout]' ).on( 'change', this._postLayoutChanged );
- },
- /**
- * Bind events to the custom post layout lightbox.
- *
- * @since 1.0
- * @access _bindCustomPostLayoutSettings
- * @method _bind
- */
- _bindCustomPostLayoutSettings: function()
- {
- var form = $( '[data-type="custom_post_layout"]:visible' ),
- html = form.find( 'textarea[name="html"]' ),
- css = form.find( 'textarea[name="css"]' ),
- cancel = form.find( '.fl-builder-settings-cancel' );
- html.on( 'change', $.proxy( this._doCustomPostLayoutPreview, this ) );
- css.on( 'change', $.proxy( this._doCustomPostLayoutPreview, this ) );
- cancel.on( 'click', $.proxy( this._cancelClicked, this ) );
- },
- /**
- * Fires when the layout select changes.
- *
- * @since 1.0
- * @access private
- * @method _layoutChanged
- */
- _layoutChanged: function()
- {
- var val = $( 'select[name=layout]' ).val(),
- settings = $( 'form.fl-builder-settings' );
- settings.removeClass( 'fl-post-grid-layout-columns' );
- settings.removeClass( 'fl-post-grid-layout-grid' );
- settings.removeClass( 'fl-post-grid-layout-gallery' );
- settings.removeClass( 'fl-post-grid-layout-feed' );
- settings.addClass( 'fl-post-grid-layout-' + val );
- },
- /**
- * Fires when the post layout select changes.
- *
- * @since 1.0
- * @access private
- * @method _postLayoutChanged
- */
- _postLayoutChanged: function()
- {
- var val = $( 'select[name=post_layout]' ).val(),
- settings = $( 'form.fl-builder-settings' );
- if ( 'default' == val ) {
- settings.removeClass( 'fl-post-grid-layout-custom' );
- } else {
- settings.addClass( 'fl-post-grid-layout-custom' );
- }
- },
- /**
- * Callback for previewing custom post layouts.
- *
- * @since 1.0
- * @access private
- * @method _doCustomPostLayoutPreview
- */
- _doCustomPostLayoutPreview: function()
- {
- var moduleForm = $( '.fl-builder-module-settings' ),
- moduleSettings = FLBuilder._getSettings( moduleForm ),
- postForm = $( '.fl-builder-settings[data-type="custom_post_layout"]' ),
- postSettings = FLBuilder._getSettings( postForm ),
- postField = moduleForm.find( '[name="custom_post_layout"]' ),
- preview = FLBuilder.preview;
- if ( ! this._previousSettings ) {
- this._previousSettings = moduleSettings.custom_post_layout
- }
- postField.val( JSON.stringify( postSettings ) );
- preview.delay( 2000, $.proxy( preview.preview, preview ) );
- },
- /**
- * Callback for when the custom post layout settings
- * lightbox cancel button is clicked.
- *
- * @since 1.0
- * @access private
- * @method _cancelClicked
- */
- _cancelClicked: function()
- {
- var postField = $( '.fl-builder-module-settings' ).find( '[name="custom_post_layout"]' );
- if ( this._previousSettings ) {
- postField.val( this._previousSettings ).trigger( 'change' );
- this._previousSettings = null;
- }
- }
- };
- $( function(){ FLThemeBuilderPostModuleSettings._init() } );
- })(jQuery);
|