Вход Регистрация
Файл: wordpress/wp-includes/js/customize-models.js
Строк: 167
<?php
/* globals _wpCustomizeHeader, _ */
(function( $, wp ) {
    var 
api wp.customize;
    
api.HeaderTool = {};


    
/**
     * wp.customize.HeaderTool.ImageModel
     *
     * A header image. This is where saves via the Customizer API are
     * abstracted away, plus our own AJAX calls to add images to and remove
     * images from the user's recently uploaded images setting on the server.
     * These calls are made regardless of whether the user actually saves new
     * Customizer settings.
     *
     * @constructor
     * @augments Backbone.Model
     */
    
api.HeaderTool.ImageModel Backbone.Model.extend({
        
defaults: function() {
            return {
                
header: {
                    
attachment_id0,
                    
url'',
                    
timestamp_.now(),
                    
thumbnail_url''
                
},
                
choice'',
                
selectedfalse,
                
randomfalse
            
};
        },

        
initialize: function() {
            
this.on('hide'this.hidethis);
        },

        
hide: function() {
            
this.set('choice''');
            
api('header_image').set('remove-header');
            
api('header_image_data').set('remove-header');
        },

        
destroy: function() {
            var 
data this.get('header'),
                
curr api.HeaderTool.currentHeader.get('header').attachment_id;

            
// If the image we're removing is also the current header, unset
            // the latter
            
if (curr && data.attachment_id === curr) {
                
api.HeaderTool.currentHeader.trigger('hide');
            }

            
wp.ajax.post'custom-header-remove', {
                
nonce_wpCustomizeHeader.nonces.remove,
                
wp_customize'on',
                
themeapi.settings.theme.stylesheet,
                
attachment_iddata.attachment_id
            
});

            
this.trigger('destroy'thisthis.collection);
        },

        
save: function() {
            if (
this.get('random')) {
                
api('header_image').set(this.get('header').random);
                
api('header_image_data').set(this.get('header').random);
            } else {
                if (
this.get('header').defaultName) {
                    
api('header_image').set(this.get('header').url);
                    
api('header_image_data').set(this.get('header').defaultName);
                } else {
                    
api('header_image').set(this.get('header').url);
                    
api('header_image_data').set(this.get('header'));
                }
            }

            
api.HeaderTool.combinedList.trigger('control:setImage'this);
        },

        
importImage: function() {
            var 
data this.get('header');
            if (
data.attachment_id === undefined) {
                return;
            }

            
wp.ajax.post'custom-header-add', {
                
nonce_wpCustomizeHeader.nonces.add,
                
wp_customize'on',
                
themeapi.settings.theme.stylesheet,
                
attachment_iddata.attachment_id
            
} );
        },

        
shouldBeCropped: function() {
            if (
this.get('themeFlexWidth') === true &&
                        
this.get('themeFlexHeight') === true) {
                return 
false;
            }

            if (
this.get('themeFlexWidth') === true &&
                
this.get('themeHeight') === this.get('imageHeight')) {
                return 
false;
            }

            if (
this.get('themeFlexHeight') === true &&
                
this.get('themeWidth') === this.get('imageWidth')) {
                return 
false;
            }

            if (
this.get('themeWidth') === this.get('imageWidth') &&
                
this.get('themeHeight') === this.get('imageHeight')) {
                return 
false;
            }

            if (
this.get('imageWidth') <= this.get('themeWidth')) {
                return 
false;
            }

            return 
true;
        }
    });


    
/**
     * wp.customize.HeaderTool.ChoiceList
     *
     * @constructor
     * @augments Backbone.Collection
     */
    
api.HeaderTool.ChoiceList Backbone.Collection.extend({
        
modelapi.HeaderTool.ImageModel,

        
// Ordered from most recently used to least
        
comparator: function(model) {
            return -
model.get('header').timestamp;
        },

        
initialize: function() {
            var 
current api.HeaderTool.currentHeader.get('choice').replace(/^https?:///, ''),
                
isRandom this.isRandomChoice(api.get().header_image);

            
// Overridable by an extending class
            
if (!this.type) {
                
this.type 'uploaded';
            }

            
// Overridable by an extending class
            
if (typeof this.data === 'undefined') {
                
this.data _wpCustomizeHeader.uploads;
            }

            if (
isRandom) {
                
// So that when adding data we don't hide regular images
                
current api.get().header_image;
            }

            
this.on('control:setImage'this.setImagethis);
            
this.on('control:removeImage'this.removeImagethis);
            
this.on('add'this.maybeAddRandomChoicethis);

            
_.each(this.data, function(eltindex) {
                if (!
elt.attachment_id) {
                    
elt.defaultName index;
                }

                if (
typeof elt.timestamp === 'undefined') {
                    
elt.timestamp 0;
                }

                
this.add({
                    
headerelt,
                    
choiceelt.url.split('/').pop(),
                    
selectedcurrent === elt.url.replace(/^https?:///, '')
                
}, { silenttrue });
            }, 
this);

            if (
this.size() > 0) {
                
this.addRandomChoice(current);
            }
        },

        
maybeAddRandomChoice: function() {
            if (
this.size() === 1) {
                
this.addRandomChoice();
            }
        },

        
addRandomChoice: function(initialChoice) {
            var 
isRandomSameType RegExp(this.type).test(initialChoice),
                
randomChoice 'random-' this.type '-image';

            
this.add({
                
header: {
                    
timestamp0,
                    
randomrandomChoice,
                    
width245,
                    
height41
                
},
                
choicerandomChoice,
                
randomtrue,
                
selectedisRandomSameType
            
});
        },

        
isRandomChoice: function(choice) {
            return (/^
random-(uploaded|default)-image$/).test(choice);
        },

        
shouldHideTitle: function() {
            return 
this.size() < 2;
        },

        
setImage: function(model) {
            
this.each(function(m) {
                
m.set('selected'false);
            });

            if (
model) {
                
model.set('selected'true);
            }
        },

        
removeImage: function() {
            
this.each(function(m) {
                
m.set('selected'false);
            });
        }
    });


    
/**
     * wp.customize.HeaderTool.DefaultsList
     *
     * @constructor
     * @augments wp.customize.HeaderTool.ChoiceList
     * @augments Backbone.Collection
     */
    
api.HeaderTool.DefaultsList api.HeaderTool.ChoiceList.extend({
        
initialize: function() {
            
this.type 'default';
            
this.data _wpCustomizeHeader.defaults;
            
api.HeaderTool.ChoiceList.prototype.initialize.apply(this);
        }
    });

})( 
jQuerywindow.wp );
?>
Онлайн: 3
Реклама