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) {
147 var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
148 hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
151 action: 'closed-postboxes',
154 closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
159 save_order : function(page) {
160 var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
163 action: 'meta-box-order',
164 _ajax_nonce: $('#meta-box-order-nonce').val(),
165 page_columns: page_columns,
168 $('.meta-box-sortables').each( function() {
169 postVars[ 'order[' + this.id.split( '-' )[0] + ']' ] = $( this ).sortable( 'toArray' ).join( ',' );
171 $.post( ajaxurl, postVars );
174 _mark_area : function() {
175 var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
177 $( '#dashboard-widgets .meta-box-sortables:visible' ).each( function() {
180 if ( visible == 1 || t.children('.postbox:visible').length )
181 t.removeClass('empty-container');
183 t.addClass('empty-container');
187 if ( side.children('.postbox:visible').length )
188 side.removeClass('empty-container');
189 else if ( $('#postbox-container-1').css('width') == '280px' )
190 side.addClass('empty-container');
194 _pb_edit : function(n) {
195 var el = $('.metabox-holder').get(0);
198 el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
201 $( document ).trigger( 'postboxes-columnchange' );
204 _pb_change : function() {
205 var check = $( 'label.columns-prefs-1 input[type="radio"]' );
207 switch ( window.orientation ) {
210 if ( !check.length || !check.is(':checked') )
215 if ( $('#poststuff').length ) {
218 if ( !check.length || !check.is(':checked') )