diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php index 70e55d9f9..2b6303947 100644 --- a/wp-admin/edit-form-advanced.php +++ b/wp-admin/edit-form-advanced.php @@ -40,8 +40,9 @@ $messages['page'] = array( sprintf( __('Page updated. View page'), get_permalink($post_ID) ), __('Custom field updated.'), __('Custom field deleted.'), - sprintf( __('Page published. View page'), get_permalink($post_ID) ), + __('Page updated.'), isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + sprintf( __('Page published. View page'), get_permalink($post_ID) ), sprintf( __('Page submitted. Preview page'), add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ), // translators: Publish box date format, see http://php.net/date - Same as in meta-boxes.php sprintf( __('Page scheduled for: %1$s. Preview page'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), get_permalink($post_ID) ), diff --git a/wp-admin/page.php b/wp-admin/page.php deleted file mode 100644 index e8af5b43f..000000000 --- a/wp-admin/page.php +++ /dev/null @@ -1,222 +0,0 @@ -ID) ) - wp_die( __('You attempted to edit a page that doesn’t exist. Perhaps it was deleted?') ); - - if ( !current_user_can('edit_page', $page_ID) ) - wp_die( __('You are not allowed to edit this page.') ); - - if ( 'trash' == $post->post_status ) - wp_die( __('You can’t edit this page because it is in the Trash. Please move it out of the Trash and try again.') ); - - if ( 'page' != $post->post_type ) { - wp_redirect( get_edit_post_link( $post_ID, 'url' ) ); - exit(); - } - - wp_enqueue_script('post'); - if ( user_can_richedit() ) - wp_enqueue_script('editor'); - add_thickbox(); - wp_enqueue_script('media-upload'); - wp_enqueue_script('word-count'); - - if ( $last = wp_check_post_lock( $post->ID ) ) { - add_action('admin_notices', '_admin_notice_post_locked' ); - } else { - wp_set_post_lock( $post->ID ); - wp_enqueue_script('autosave'); - } - - $post_type = $post->post_type; - include('edit-form-advanced.php'); - break; - -case 'editattachment': - $page_id = $post_ID = (int) $_POST['post_ID']; - check_admin_referer('update-attachment_' . $page_id); - - // Don't let these be changed - unset($_POST['guid']); - $_POST['post_type'] = 'attachment'; - - // Update the thumbnail filename - $newmeta = wp_get_attachment_metadata( $page_id, true ); - $newmeta['thumb'] = $_POST['thumb']; - - wp_update_attachment_metadata( $newmeta ); - -case 'editpost': - $page_ID = (int) $_POST['post_ID']; - check_admin_referer('update-page_' . $page_ID); - - $page_ID = edit_post(); - - redirect_page($page_ID); - - exit(); - break; - -case 'trash': - $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']); - check_admin_referer('trash-page_' . $post_id); - - $post = & get_post($post_id); - - if ( !current_user_can('delete_page', $post_id) ) - wp_die( __('You are not allowed to move this page to the trash.') ); - - if ( !wp_trash_post($post_id) ) - wp_die( __('Error in moving to trash...') ); - - wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) ); - exit(); - break; - -case 'untrash': - $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']); - check_admin_referer('untrash-page_' . $post_id); - - $post = & get_post($post_id); - - if ( !current_user_can('delete_page', $post_id) ) - wp_die( __('You are not allowed to move this page out of the trash.') ); - - if ( !wp_untrash_post($post_id) ) - wp_die( __('Error in restoring from trash...') ); - - wp_redirect( add_query_arg('untrashed', 1, $sendback) ); - exit(); - break; - -case 'delete': - $page_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']); - check_admin_referer('delete-page_' . $page_id); - - $page = & get_post($page_id); - - if ( !current_user_can('delete_page', $page_id) ) - wp_die( __('You are not allowed to delete this page.') ); - - if ( $page->post_type == 'attachment' ) { - if ( ! wp_delete_attachment($page_id) ) - wp_die( __('Error in deleting...') ); - } else { - if ( !wp_delete_post($page_id) ) - wp_die( __('Error in deleting...') ); - } - - wp_redirect( add_query_arg('deleted', 1, $sendback) ); - exit(); - break; - -case 'preview': - check_admin_referer( 'autosave', 'autosavenonce' ); - - $url = post_preview(); - - wp_redirect($url); - exit(); - break; - -default: - wp_redirect('edit-pages.php'); - exit(); - break; -} // end switch -include('admin-footer.php'); -?> diff --git a/wp-admin/post.php b/wp-admin/post.php index 08596e594..67f2607ec 100644 --- a/wp-admin/post.php +++ b/wp-admin/post.php @@ -16,12 +16,32 @@ $submenu_file = 'edit.php'; wp_reset_vars(array('action', 'safe_mode', 'withcomments', 'posts', 'content', 'edited_post_title', 'comment_error', 'profile', 'trackback_url', 'excerpt', 'showcomments', 'commentstart', 'commentend', 'commentorder')); +if ( isset($_GET['post']) ) + $post_id = (int) $_GET['post']; +elseif ( isset($_POST['post_ID']) ) + $post_id = (int) $_POST['post_ID']; +else + $post_id = 0; +$post_ID = $post_id; + +$post = null; +$post_type_object = null; +$post_type_cap = null; +if ( $post_id ) { + $post = get_post($post_id); + if ( $post ) { + $post_type_object = get_post_type_object($post->post_type); + if ( $post_type_object ) + $post_type_cap = $post_type_object->capability_type; + } +} + /** * Redirect to previous page. * - * @param int $post_ID Optional. Post ID. + * @param int $post_id Optional. Post ID. */ -function redirect_post($post_ID = '') { +function redirect_post($post_id = '') { global $action; $referredby = ''; @@ -37,7 +57,7 @@ function redirect_post($post_ID = '') { elseif ( isset($_POST['publish']) ) $location = 'sidebar.php?a=b'; } elseif ( isset($_POST['save']) || isset($_POST['publish']) ) { - $status = get_post_status( $post_ID ); + $status = get_post_status( $post_id ); if ( isset( $_POST['publish'] ) ) { switch ( $status ) { @@ -54,7 +74,7 @@ function redirect_post($post_ID = '') { $message = 'draft' == $status ? 10 : 1; } - $location = add_query_arg( 'message', $message, get_edit_post_link( $post_ID, 'url' ) ); + $location = add_query_arg( 'message', $message, get_edit_post_link( $post_id, 'url' ) ); } elseif ( isset($_POST['addmeta']) && $_POST['addmeta'] ) { $location = add_query_arg( 'message', 2, wp_get_referer() ); $location = explode('#', $location); @@ -64,12 +84,12 @@ function redirect_post($post_ID = '') { $location = explode('#', $location); $location = $location[0] . '#postcustom'; } elseif ( 'post-quickpress-save-cont' == $_POST['action'] ) { - $location = "post.php?action=edit&post=$post_ID&message=7"; + $location = "post.php?action=edit&post=$post_id&message=7"; } else { - $location = add_query_arg( 'message', 4, get_edit_post_link( $post_ID, 'url' ) ); + $location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) ); } - wp_redirect( apply_filters( 'redirect_post_location', $location, $post_ID ) ); + wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) ); } if ( isset( $_POST['deletepost'] ) ) @@ -100,55 +120,60 @@ case 'post-quickpress-save': if ( !empty( $_POST['quickpress_post_ID'] ) ) { $_POST['post_ID'] = (int) $_POST['quickpress_post_ID']; - $post_ID = edit_post(); + $post_id = edit_post(); } else { - $post_ID = 'postajaxpost' == $action ? edit_post() : write_post(); + $post_id = 'postajaxpost' == $action ? edit_post() : write_post(); } if ( 0 === strpos( $action, 'post-quickpress' ) ) { - $_POST['post_ID'] = $post_ID; + $_POST['post_ID'] = $post_id; // output the quickpress dashboard widget require_once(ABSPATH . 'wp-admin/includes/dashboard.php'); wp_dashboard_quick_press(); exit; } - redirect_post($post_ID); + redirect_post($post_id); exit(); break; case 'edit': $editing = true; - if ( empty( $_GET['post'] ) ) { + if ( empty( $post_id ) ) { wp_redirect("post.php"); exit(); } - $post_ID = $p = (int) $_GET['post']; - $post = get_post($post_ID); - $post_type_object = get_post_type_object($post->post_type); + + $p = $post_id; if ( empty($post->ID) ) - wp_die( __('You attempted to edit a post that doesn’t exist. Perhaps it was deleted?') ); + wp_die( __('You attempted to edit an item that doesn’t exist. Perhaps it was deleted?') ); - if ( !current_user_can('edit_post', $post_ID) ) - wp_die( __('You are not allowed to edit this post.') ); + if ( !current_user_can($post_type_object->edit_cap, $post_id) ) + wp_die( __('You are not allowed to edit this item.') ); if ( 'trash' == $post->post_status ) - wp_die( __('You can’t edit this post because it is in the Trash. Please restore it and try again.') ); + wp_die( __('You can’t edit this item because it is in the Trash. Please restore it and try again.') ); if ( null == $post_type_object ) wp_die( __('Unknown post type.') ); - if ( 'post' != $post->post_type && $post_type_object->_builtin ) { - wp_redirect( get_edit_post_link( $post->ID, 'url' ) ); - exit(); - } - $post_type = $post->post_type; - if ( 'post' != $post_type ) { - $parent_file = "edit.php?post_type=$post_type"; - $submenu_file = "edit.php?post_type=$post_type"; + if ( 'post' == $post_type ) { + $parent_file = "edit.php"; + $submenu_file = "edit.php"; + } elseif ( 'page' == $post_type ) { + $parent_file = "edit-pages.php"; + $submenu_file = "edit-pages.php"; + } else { + if ( $post_type_object->hierarchical ) { + $parent_file = "edit-pages.php?post_type=$post_type"; + $submenu_file = "edit-pages.php?post_type=$post_type"; + } else { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit.php?post_type=$post_type"; + } } wp_enqueue_script('post'); @@ -168,15 +193,13 @@ case 'edit': } $title = sprintf(__('Edit %s'), $post_type_object->label); - $post = get_post_to_edit($post_ID); + $post = get_post_to_edit($post_id); include('edit-form-advanced.php'); break; case 'editattachment': - $post_id = (int) $_POST['post_ID']; - check_admin_referer('update-attachment_' . $post_id); // Don't let these be changed @@ -190,24 +213,22 @@ case 'editattachment': wp_update_attachment_metadata( $post_id, $newmeta ); case 'editpost': - $post_ID = (int) $_POST['post_ID']; - check_admin_referer('update-post_' . $post_ID); + check_admin_referer('update-' . $post->post_type . '_' . $post_id); - $post_ID = edit_post(); + $post_id = edit_post(); - redirect_post($post_ID); // Send user on their way while we keep working + redirect_post($post_id); // Send user on their way while we keep working exit(); break; case 'trash': - $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']); check_admin_referer('trash-post_' . $post_id); $post = & get_post($post_id); - if ( !current_user_can('delete_post', $post_id) ) - wp_die( __('You are not allowed to move this post to the trash.') ); + if ( !current_user_can('delete_' . $post_type_cap, $post_id) ) + wp_die( __('You are not allowed to move this item to the trash.') ); if ( ! wp_trash_post($post_id) ) wp_die( __('Error in moving to trash...') ); @@ -217,13 +238,10 @@ case 'trash': break; case 'untrash': - $post_id = isset($_GET['post']) ? intval($_GET['post']) : intval($_POST['post_ID']); check_admin_referer('untrash-post_' . $post_id); - $post = & get_post($post_id); - - if ( !current_user_can('delete_post', $post_id) ) - wp_die( __('You are not allowed to move this post out of the trash.') ); + if ( !current_user_can('delete_' . $post_type_cap, $post_id) ) + wp_die( __('You are not allowed to move this item out of the trash.') ); if ( ! wp_untrash_post($post_id) ) wp_die( __('Error in restoring from trash...') ); @@ -233,13 +251,10 @@ case 'untrash': break; case 'delete': - $post_id = (isset($_GET['post'])) ? intval($_GET['post']) : intval($_POST['post_ID']); check_admin_referer('delete-post_' . $post_id); - $post = & get_post($post_id); - - if ( !current_user_can('delete_post', $post_id) ) - wp_die( __('You are not allowed to delete this post.') ); + if ( !current_user_can('delete_' . $post_type_cap, $post_id) ) + wp_die( __('You are not allowed to delete this item.') ); $force = !EMPTY_TRASH_DAYS; if ( $post->post_type == 'attachment' ) { @@ -265,7 +280,10 @@ case 'preview': break; default: - wp_redirect('edit.php'); + if ( $post_type_object->hierarchical ) + wp_redirect('edit-pages.php'); + else + wp_redirect('edit.php'); exit(); break; } // end switch diff --git a/wp-includes/post.php b/wp-includes/post.php index 3690a1ef0..7b82b7a48 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -16,7 +16,7 @@ */ function create_initial_post_types() { register_post_type( 'post', array('label' => __('Posts'), 'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'post', 'hierarchical' => false) ); - register_post_type( 'page', array('label' => __('Pages'),'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'page.php?post=%d', 'capability_type' => 'page', 'hierarchical' => true) ); + register_post_type( 'page', array('label' => __('Pages'),'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'post.php?post=%d', 'capability_type' => 'page', 'hierarchical' => true) ); register_post_type( 'attachment', array('label' => __('Media'), 'exclude_from_search' => false, '_builtin' => true, '_edit_link' => 'media.php?attachment_id=%d', 'capability_type' => 'post', 'hierarchical' => false) ); register_post_type( 'revision', array('label' => __('Revisions'),'exclude_from_search' => true, '_builtin' => true, '_edit_link' => 'revision.php?revision=%d', 'capability_type' => 'post', 'hierarchical' => false) ); add_post_type_support('post', array('post-thumbnails', 'excerpts', 'trackbacks', 'custom-fields', 'comments') );