mirror of
https://github.com/WordPress/WordPress.git
synced 2025-01-26 02:01:37 +01:00
a5478d7adb
* The way that the JS modules for media are currently set up turns the existing global `wp.media` namespace into a read-only API, this is bad. * For the existing module implementation to work with plugins, those looking to override or extend a class would have to modify their own plugin to use `browserify` - we can't expect this to happen * Because the general way that plugins override media classes is via machete (resetting them to something else), we cannot use `require( 'module' )` in the internal code for media modules We CAN continue to use `require( 'fun/js' )` in the manifests for media. Future code/projects should carefully consider what is made to be public API. In 3.5, EVERYTHING was made public, so everything shall remain public. See #31684, #28510. Built from https://develop.svn.wordpress.org/trunk@31935 git-svn-id: http://core.svn.wordpress.org/trunk@31914 1a063a9b-81f0-0310-95a4-ce76da25c4cd
73 lines
1.3 KiB
JavaScript
73 lines
1.3 KiB
JavaScript
/*globals jQuery */
|
|
|
|
/**
|
|
* wp.media.view.MenuItem
|
|
*
|
|
* @class
|
|
* @augments wp.media.View
|
|
* @augments wp.Backbone.View
|
|
* @augments Backbone.View
|
|
*/
|
|
var $ = jQuery,
|
|
MenuItem;
|
|
|
|
MenuItem = wp.media.View.extend({
|
|
tagName: 'a',
|
|
className: 'media-menu-item',
|
|
|
|
attributes: {
|
|
href: '#'
|
|
},
|
|
|
|
events: {
|
|
'click': '_click'
|
|
},
|
|
/**
|
|
* @param {Object} event
|
|
*/
|
|
_click: function( event ) {
|
|
var clickOverride = this.options.click;
|
|
|
|
if ( event ) {
|
|
event.preventDefault();
|
|
}
|
|
|
|
if ( clickOverride ) {
|
|
clickOverride.call( this );
|
|
} else {
|
|
this.click();
|
|
}
|
|
|
|
// When selecting a tab along the left side,
|
|
// focus should be transferred into the main panel
|
|
if ( ! wp.media.isTouchDevice ) {
|
|
$('.media-frame-content input').first().focus();
|
|
}
|
|
},
|
|
|
|
click: function() {
|
|
var state = this.options.state;
|
|
|
|
if ( state ) {
|
|
this.controller.setState( state );
|
|
this.views.parent.$el.removeClass( 'visible' ); // TODO: or hide on any click, see below
|
|
}
|
|
},
|
|
/**
|
|
* @returns {wp.media.view.MenuItem} returns itself to allow chaining
|
|
*/
|
|
render: function() {
|
|
var options = this.options;
|
|
|
|
if ( options.text ) {
|
|
this.$el.text( options.text );
|
|
} else if ( options.html ) {
|
|
this.$el.html( options.html );
|
|
}
|
|
|
|
return this;
|
|
}
|
|
});
|
|
|
|
module.exports = MenuItem;
|