6 var $document = $( document );
9 handle_click : function () {
11 p = $el.parent( '.postbox' ),
15 if ( 'dashboard_browser_nag' === id ) {
19 p.toggleClass( 'closed' );
21 ariaExpandedValue = ! p.hasClass( 'closed' );
23 if ( $el.hasClass( 'handlediv' ) ) {
24 // The handle button was clicked.
25 $el.attr( 'aria-expanded', ariaExpandedValue );
27 // The handle heading was clicked.
28 $el.closest( '.postbox' ).find( 'button.handlediv' )
29 .attr( 'aria-expanded', ariaExpandedValue );
32 if ( postboxes.page !== 'press-this' ) {
33 postboxes.save_state( postboxes.page );
37 if ( !p.hasClass('closed') && $.isFunction( postboxes.pbshow ) ) {
38 postboxes.pbshow( id );
39 } else if ( p.hasClass('closed') && $.isFunction( postboxes.pbhide ) ) {
40 postboxes.pbhide( id );
44 $document.trigger( 'postbox-toggled', p );
47 add_postbox_toggles : function (page, args) {
48 var $handles = $( '.postbox .hndle, .postbox .handlediv' );
51 this.init( page, args );
53 $handles.on( 'click.postboxes', this.handle_click );
55 $('.postbox .hndle a').click( function(e) {
59 $( '.postbox a.dismiss' ).on( 'click.postboxes', function( e ) {
60 var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
62 $( '#' + hide_id ).prop('checked', false).triggerHandler('click');
65 $('.hide-postbox-tog').bind('click.postboxes', function() {
68 $postbox = $( '#' + boxId );
70 if ( $el.prop( 'checked' ) ) {
72 if ( $.isFunction( postboxes.pbshow ) ) {
73 postboxes.pbshow( boxId );
77 if ( $.isFunction( postboxes.pbhide ) ) {
78 postboxes.pbhide( boxId );
81 postboxes.save_state( page );
82 postboxes._mark_area();
83 $document.trigger( 'postbox-toggled', $postbox );
86 $('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
87 var n = parseInt($(this).val(), 10);
90 postboxes._pb_edit(n);
91 postboxes.save_order( page );
96 init : function(page, args) {
97 var isMobile = $( document.body ).hasClass( 'mobile' ),
98 $handleButtons = $( '.postbox .handlediv' );
100 $.extend( this, args || {} );
101 $('#wpbody-content').css('overflow','hidden');
102 $('.meta-box-sortables').sortable({
103 placeholder: 'sortable-placeholder',
104 connectWith: '.meta-box-sortables',
108 delay: ( isMobile ? 200 : 0 ),
110 tolerance: 'pointer',
111 forcePlaceholderSize: true,
117 if ( $el.find( '#dashboard_browser_nag' ).is( ':visible' ) && 'dashboard_browser_nag' != this.firstChild.id ) {
118 $el.sortable('cancel');
122 postboxes.save_order(page);
124 receive: function(e,ui) {
125 if ( 'dashboard_browser_nag' == ui.item[0].id )
126 $(ui.sender).sortable('cancel');
128 postboxes._mark_area();
133 $(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
139 // Set the handle buttons `aria-expanded` attribute initial value on page load.
140 $handleButtons.each( function () {
142 $el.attr( 'aria-expanded', ! $el.parent( '.postbox' ).hasClass( 'closed' ) );
146 save_state : function(page) {
149 // Return on the nav-menus.php screen, see #35112.
150 if ( 'nav-menus' === page ) {
154 closed = $( '.postbox' ).filter( '.closed' ).map( function() { return this.id; } ).get().join( ',' );
155 hidden = $( '.postbox' ).filter( ':hidden' ).map( function() { return this.id; } ).get().join( ',' );
158 action: 'closed-postboxes',
161 closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
166 save_order : function(page) {
167 var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
170 action: 'meta-box-order',
171 _ajax_nonce: $('#meta-box-order-nonce').val(),
172 page_columns: page_columns,
175 $('.meta-box-sortables').each( function() {
176 postVars[ 'order[' + this.id.split( '-' )[0] + ']' ] = $( this ).sortable( 'toArray' ).join( ',' );
178 $.post( ajaxurl, postVars );
181 _mark_area : function() {
182 var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
184 $( '#dashboard-widgets .meta-box-sortables:visible' ).each( function() {
187 if ( visible == 1 || t.children('.postbox:visible').length )
188 t.removeClass('empty-container');
190 t.addClass('empty-container');
194 if ( side.children('.postbox:visible').length )
195 side.removeClass('empty-container');
196 else if ( $('#postbox-container-1').css('width') == '280px' )
197 side.addClass('empty-container');
201 _pb_edit : function(n) {
202 var el = $('.metabox-holder').get(0);
205 el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
208 $( document ).trigger( 'postboxes-columnchange' );
211 _pb_change : function() {
212 var check = $( 'label.columns-prefs-1 input[type="radio"]' );
214 switch ( window.orientation ) {
217 if ( !check.length || !check.is(':checked') )
222 if ( $('#poststuff').length ) {
225 if ( !check.length || !check.is(':checked') )