diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php index 4ac27439f..04be74487 100644 --- a/wp-admin/admin-ajax.php +++ b/wp-admin/admin-ajax.php @@ -628,13 +628,17 @@ case 'closed-postboxes' : check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' ); $closed = isset( $_POST['closed'] )? $_POST['closed'] : ''; $closed = explode( ',', $_POST['closed'] ); + $hidden = isset( $_POST['hidden'] )? $_POST['hidden'] : ''; + $hidden = explode( ',', $_POST['hidden'] ); $page = isset( $_POST['page'] )? $_POST['page'] : ''; if ( !preg_match( '/^[a-z-]+$/', $page ) ) { die(-1); } - if (!is_array($closed)) break; $current_user = wp_get_current_user(); - update_usermeta($current_user->ID, 'closedpostboxes_'.$page, $closed); + if ( is_array($closed) ) + update_usermeta($current_user->ID, 'closedpostboxes_'.$page, $closed); + if ( is_array($hidden) ) + update_usermeta($current_user->ID, 'meta-box-hidden_'.$page, $hidden); break; case 'get-permalink': check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php index b39e58ffc..4eb6d514f 100644 --- a/wp-admin/edit-form-advanced.php +++ b/wp-admin/edit-form-advanced.php @@ -404,6 +404,13 @@ endif; + + +
+
+ +
+ \n"; $i = 0; @@ -1270,13 +1272,15 @@ function do_meta_boxes($page, $context, $object) { if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) ) break; - foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) { foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) { if ( false == $box || ! $box['title'] ) continue; $i++; - echo '
' . "\n"; + $style = ''; + if ( in_array($box['id'], $hidden) ) + $style = 'style="display:none;"'; + echo '
' . "\n"; echo "

{$box['title']}

\n"; echo '
' . "\n"; call_user_func($box['callback'], $object, $box); @@ -1315,4 +1319,27 @@ function remove_meta_box($id, $page, $context) { $wp_meta_boxes[$page][$context][$priority][$id] = false; } +function meta_box_prefs($page) { + global $wp_meta_boxes; + + if ( empty($wp_meta_boxes[$page]) ) + return; + + $hidden = get_user_option( "meta-box-hidden_$page" ); + + echo '
    '; + foreach ( array_keys($wp_meta_boxes[$page]) as $context ) { + foreach ( array_keys($wp_meta_boxes[$page][$context]) as $priority ) { + foreach ( $wp_meta_boxes[$page][$context][$priority] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + $box_id = $box['id']; + echo '"; + } + } + } + echo '
'; +} ?> diff --git a/wp-admin/js/post.js b/wp-admin/js/post.js index 44238846e..d0393b168 100644 --- a/wp-admin/js/post.js +++ b/wp-admin/js/post.js @@ -185,6 +185,16 @@ jQuery(document).ready( function() { return false; }); + // Edit Settings + jQuery('.edit-settings-link').click(function () { + if (jQuery('#edit-settings').is(":hidden")) { + jQuery('#edit-settings').slideDown("normal"); + } else { + jQuery('#edit-settings').slideUp("normal"); + } + return false; + }); + // Custom Fields jQuery('#the-list').wpList( { addAfter: function( xml, s ) { if ( jQuery.isFunction( autosave_update_post_ID ) ) { diff --git a/wp-admin/js/postbox.js b/wp-admin/js/postbox.js index 39ab3ee17..86c2a81dd 100644 --- a/wp-admin/js/postbox.js +++ b/wp-admin/js/postbox.js @@ -5,6 +5,17 @@ $('.postbox h3').before('+ '); $('.postbox a.togbox').click( function() { $($(this).parent().get(0)).toggleClass('closed'); save_postboxes_state(page); } ); + $('.hide-postbox-tog').click( function() { + var box = jQuery(this).val(); + var show = jQuery(this).attr('checked'); + if ( show ) { + jQuery('#' + box).show(); + } else { + jQuery('#' + box).hide(); + } + save_postboxes_state(page); + } ); + if ( $.browser.msie ) { $('#side-sortables').append( '
' ); } else { @@ -64,9 +75,11 @@ jQuery(document).ready(function(){postboxes.expandSidebar();}); function save_postboxes_state(page) { var closed = jQuery('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','); + var hidden = jQuery('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(','); jQuery.post(postboxL10n.requestFile, { action: 'closed-postboxes', closed: closed, + hidden: hidden, closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(), page: page });