Add get_post_to_edit() and get_default_post_to_edit(). More post.php cleanup.

git-svn-id: http://svn.automattic.com/wordpress/trunk@2651 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2005-06-19 02:51:48 +00:00
parent 477f109d97
commit 0b7373e0cc
6 changed files with 102 additions and 93 deletions

View File

@ -1,6 +1,6 @@
<?php
// Creates a new post from the "Write Post" form.
// Creates a new post from the "Write Post" form using $_POST information.
function write_post() {
global $user_ID;
@ -54,6 +54,7 @@ function write_post() {
add_meta($post_ID);
}
// Update an existing post with values provided in $_POST.
function edit_post() {
global $user_ID;
@ -116,6 +117,42 @@ function edit_post() {
add_meta($post_ID);
}
// Get an existing post and format it for editing.
function get_post_to_edit($id) {
$post = get_post($id);
$post->post_content = format_to_edit($post->post_content);
$post->post_content = apply_filters('content_edit_pre', $post->post_content);
$post->post_excerpt = format_to_edit($post->post_excerpt);
$post->post_excerpt = apply_filters('excerpt_edit_pre', $post->post_excerpt);
$post->post_title = format_to_edit($post->post_title);
$post->post_title = apply_filters('title_edit_pre', $post->post_title);
if ($post->post_status == 'static')
$post->page_template = get_post_meta($id, '_wp_page_template', true);
return $post;
}
// Default post information to use when populating the "Write Post" form.
function get_default_post_to_edit() {
global $content, $excerpt, $edited_post_title;
$post->post_status = 'draft';
$post->comment_status = get_settings('default_comment_status');
$post->ping_status = get_settings('default_ping_status');
$post->post_pingback = get_settings('default_pingback_flag');
$post->post_category = get_settings('default_category');
$content = wp_specialchars($content);
$post->post_content = apply_filters('default_content', $content);
$post->post_title = apply_filters('default_title', $edited_post_title);
$post->post_excerpt = apply_filters('default_excerpt', $excerpt);
return $post;
}
function url_shorten ($url) {
$short_url = str_replace('http://', '', stripslashes($url));
$short_url = str_replace('www.', '', $short_url);
@ -672,26 +709,6 @@ function save_mod_rewrite_rules() {
insert_with_markers($home_path.'.htaccess', 'WordPress', $rules);
}
function generate_page_rewrite_rules() {
global $wpdb;
$posts = $wpdb->get_results("SELECT ID, post_name FROM $wpdb->posts WHERE post_status = 'static' ORDER BY post_parent DESC");
$page_rewrite_rules = array();
if ($posts) {
foreach ($posts as $post) {
// URI => page name
$uri = get_page_uri($post->ID);
$page_rewrite_rules[$uri] = $post->post_name;
}
update_option('page_uris', $page_rewrite_rules);
save_mod_rewrite_rules();
}
}
function the_quicktags () {
// Browser detection sucks, but until Safari supports the JS needed for this to work people just assume it's a bug in WP
if ( !strstr($_SERVER['HTTP_USER_AGENT'], 'Safari') ) :

View File

@ -22,9 +22,9 @@ if (0 == $post_ID) {
$form_pingback = '<input type="hidden" name="post_pingback" value="' . get_option('default_pingback_flag') . '" id="post_pingback" />';
$form_prevstatus = '<input type="hidden" name="prev_status" value="'.$post_status.'" />';
$form_prevstatus = '<input type="hidden" name="prev_status" value="' . $post->post_status . '" />';
$form_trackback = '<input type="text" name="trackback_url" style="width: 415px" id="trackback" tabindex="7" value="'. str_replace("\n", ' ', $to_ping) .'" />';
$form_trackback = '<input type="text" name="trackback_url" style="width: 415px" id="trackback" tabindex="7" value="'. str_replace("\n", ' ', $post->to_ping) .'" />';
if ('' != $pinged) {
$pings .= '<p>'. __('Already pinged:') . '</p><ul>';
@ -37,13 +37,13 @@ if ('' != $pinged) {
$saveasdraft = '<input name="save" type="submit" id="save" tabindex="6" value="' . __('Save and Continue Editing') . '" />';
if (empty($post_status)) $post_status = 'draft';
if (empty($post->post_status)) $post->post_status = 'draft';
?>
<input type="hidden" name="user_ID" value="<?php echo $user_ID ?>" />
<input type="hidden" name="action" value="<?php echo $form_action ?>" />
<input type="hidden" name="post_author" value="<?php echo $post_author ?>" />
<input type="hidden" name="post_author" value="<?php echo $post->post_author ?>" />
<?php echo $form_extra ?>
<?php if (isset($_GET['message']) && 2 > $_GET['message']) : ?>
@ -67,20 +67,20 @@ window.onload = focusit;
<div class="dbx-content">
<input name="advanced_view" type="hidden" value="1" />
<label for="comment_status" class="selectit">
<input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($comment_status, 'open'); ?> />
<input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> />
<?php _e('Allow Comments') ?></label>
<label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($ping_status, 'open'); ?> /> <?php _e('Allow Pings') ?></label>
<label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow Pings') ?></label>
</div>
</fieldset>
<fieldset id="passworddiv" class="dbx-box">
<h3 class="dbx-handle"><?php _e('Password-Protect Post') ?></h3>
<div class="dbx-content"><input name="post_password" type="text" size="13" id="post_password" value="<?php echo $post_password ?>" /></div>
<div class="dbx-content"><input name="post_password" type="text" size="13" id="post_password" value="<?php echo $post->post_password ?>" /></div>
</fieldset>
<fieldset id="slugdiv" class="dbx-box">
<h3 class="dbx-handle"><?php _e('Post slug') ?></h3>
<div class="dbx-content"><input name="post_name" type="text" size="13" id="post_name" value="<?php echo $post_name ?>" /></div>
<div class="dbx-content"><input name="post_name" type="text" size="13" id="post_name" value="<?php echo $post->post_name ?>" /></div>
</fieldset>
<fieldset id="categorydiv" class="dbx-box">
@ -91,10 +91,10 @@ window.onload = focusit;
<fieldset class="dbx-box">
<h3 class="dbx-handle"><?php _e('Post Status') ?></h3>
<div class="dbx-content"><?php if ( user_can_create_post($user_ID) ) : ?>
<label for="post_status_publish" class="selectit"><input id="post_status_publish" name="post_status" type="radio" value="publish" <?php checked($post_status, 'publish'); ?> /> <?php _e('Published') ?></label>
<label for="post_status_publish" class="selectit"><input id="post_status_publish" name="post_status" type="radio" value="publish" <?php checked($post->post_status, 'publish'); ?> /> <?php _e('Published') ?></label>
<?php endif; ?>
<label for="post_status_draft" class="selectit"><input id="post_status_draft" name="post_status" type="radio" value="draft" <?php checked($post_status, 'draft'); ?> /> <?php _e('Draft') ?></label>
<label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="radio" value="private" <?php checked($post_status, 'private'); ?> /> <?php _e('Private') ?></label></div>
<label for="post_status_draft" class="selectit"><input id="post_status_draft" name="post_status" type="radio" value="draft" <?php checked($post->post_status, 'draft'); ?> /> <?php _e('Draft') ?></label>
<label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="radio" value="private" <?php checked($post->post_status, 'private'); ?> /> <?php _e('Private') ?></label></div>
</fieldset>
<?php if ($user_level > 4) : ?>
@ -112,7 +112,7 @@ window.onload = focusit;
<?php
foreach ($users as $o) :
$o = get_userdata( $o->ID );
if ( $post_author == $o->ID || ( empty($post_ID) && $user_ID == $o->ID ) ) $selected = 'selected="selected"';
if ( $post->post_author == $o->ID || ( empty($post_ID) && $user_ID == $o->ID ) ) $selected = 'selected="selected"';
else $selected = '';
echo "<option value='$o->ID' $selected>$o->display_name</option>";
endforeach;
@ -127,7 +127,7 @@ endforeach;
<fieldset id="titlediv">
<legend><?php _e('Title') ?></legend>
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $edited_post_title; ?>" id="title" /></div>
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $post->post_title; ?>" id="title" /></div>
</fieldset>
<fieldset id="postdiv">
@ -139,7 +139,7 @@ endforeach;
$rows = 10;
}
?>
<div><textarea rows="<?php echo $rows; ?>" cols="40" name="content" tabindex="5" id="content"><?php echo $content ?></textarea></div>
<div><textarea rows="<?php echo $rows; ?>" cols="40" name="content" tabindex="5" id="content"><?php echo $post->post_content ?></textarea></div>
</fieldset>
<script type="text/javascript">
<!--
@ -170,7 +170,7 @@ if ('publish' != $post_status || 0 == $post_ID) {
<fieldset id="postexcerpt" class="dbx-box">
<h3 class="dbx-handle"><?php _e('Optional Excerpt') ?></h3>
<div class="dbx-content"><textarea rows="1" cols="40" name="excerpt" tabindex="4" id="excerpt"><?php echo $excerpt ?></textarea></div>
<div class="dbx-content"><textarea rows="1" cols="40" name="excerpt" tabindex="4" id="excerpt"><?php echo $post->post_excerpt ?></textarea></div>
</fieldset>
<fieldset class="dbx-box">
@ -202,7 +202,7 @@ if($metadata = has_meta($post_ID)) {
</div>
<?php if ('edit' == $action) : ?>
<p><input name="deletepost" class="button" type="submit" id="deletepost" tabindex="10" value="<?php _e('Delete this post') ?>" <?php echo "onclick=\"return confirm('" . sprintf(__("You are about to delete this post \'%s\'\\n \'Cancel\' to stop, \'OK\' to delete."), addslashes($edited_post_title) ) . "')\""; ?> /></p>
<p><input name="deletepost" class="button" type="submit" id="deletepost" tabindex="10" value="<?php _e('Delete this post') ?>" <?php echo "onclick=\"return confirm('" . sprintf(__("You are about to delete this post \'%s\'\\n \'Cancel\' to stop, \'OK\' to delete."), addslashes($post->post_title) ) . "')\""; ?> /></p>
<?php endif; ?>
</div>

View File

@ -22,12 +22,12 @@ window.onload = focusit;
<div id="poststuff">
<fieldset id="titlediv">
<legend><a href="http://wordpress.org/docs/reference/post/#title" title="<?php _e('Help on titles') ?>"><?php _e('Title') ?></a></legend>
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $edited_post_title; ?>" id="title" /></div>
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $post->post_title; ?>" id="title" /></div>
</fieldset>
<fieldset id="categorydiv">
<legend><a href="http://wordpress.org/docs/reference/post/#category" title="<?php _e('Help on categories') ?>"><?php _e('Categories') ?></a></legend>
<div><?php dropdown_categories($default_post_cat); ?></div>
<div><?php dropdown_categories($post->post_category); ?></div>
</fieldset>
<br />
@ -40,7 +40,7 @@ window.onload = focusit;
$rows = 10;
}
?>
<div><textarea rows="<?php echo $rows; ?>" cols="40" name="content" tabindex="4" id="content"><?php echo $content ?></textarea></div>
<div><textarea rows="<?php echo $rows; ?>" cols="40" name="content" tabindex="4" id="content"><?php echo $post->post_content ?></textarea></div>
</fieldset>

View File

@ -41,27 +41,27 @@ window.onload = focusit;
</script>
<fieldset id="titlediv">
<legend><?php _e('Page Title') ?></legend>
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $edited_post_title; ?>" id="title" /></div>
<div><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo $post->post_title; ?>" id="title" /></div>
</fieldset>
<fieldset id="commentstatusdiv">
<legend><?php _e('Discussion') ?></legend>
<div>
<input name="advanced_view" type="hidden" value="1" />
<label for="comment_status" class="selectit">
<input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($comment_status, 'open'); ?> />
<input name="comment_status" type="checkbox" id="comment_status" value="open" <?php checked($post->comment_status, 'open'); ?> />
<?php _e('Allow Comments') ?></label>
<label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($ping_status, 'open'); ?> /> <?php _e('Allow Pings') ?></label>
<label for="ping_status" class="selectit"><input name="ping_status" type="checkbox" id="ping_status" value="open" <?php checked($post->ping_status, 'open'); ?> /> <?php _e('Allow Pings') ?></label>
</div>
</fieldset>
<fieldset id="postpassworddiv">
<legend><?php _e('Page Password') ?></legend>
<div><input name="post_password" type="text" size="13" id="post_password" value="<?php echo $post_password ?>" /></div>
<div><input name="post_password" type="text" size="13" id="post_password" value="<?php echo $post->post_password ?>" /></div>
</fieldset>
<fieldset id="pageparent">
<legend><?php _e('Page Parent') ?></legend>
<div><select name="parent_id">
<option value='0'><?php _e('Main Page (no parent)'); ?></option>
<?php parent_dropdown($post_parent); ?>
<?php parent_dropdown($post->post_parent); ?>
</select>
</div>
</fieldset>
@ -74,7 +74,7 @@ window.onload = focusit;
$rows = 10;
}
?>
<div><textarea rows="<?php echo $rows; ?>" cols="40" name="content" tabindex="4" id="content"><?php echo $content ?></textarea></div>
<div><textarea rows="<?php echo $rows; ?>" cols="40" name="content" tabindex="4" id="content"><?php echo $post->post_content ?></textarea></div>
</fieldset>
@ -97,7 +97,7 @@ edCanvas = document.getElementById('content');
<th scope="row" width="30%"><?php _e('Page Template:') ?></th>
<td><div><select name="page_template">
<option value='default'><?php _e('Default Template'); ?></option>
<?php page_template_dropdown($page_template); ?>
<?php page_template_dropdown($post->page_template); ?>
</select>
</div>
@ -106,7 +106,7 @@ edCanvas = document.getElementById('content');
<?php } ?>
<tr valign="top">
<th scope="row" width="30%"><?php _e('Page slug') ?>:</th>
<td><input name="post_name" type="text" size="25" id="post_name" value="<?php echo $post_name ?>" /></td>
<td><input name="post_name" type="text" size="25" id="post_name" value="<?php echo $post->post_name ?>" /></td>
</tr>
<?php if ($user_level > 7 && $users = $wpdb->get_results("SELECT ID, user_login FROM $wpdb->users WHERE user_level <= $user_level AND user_level > 0") ) : ?>
<tr>
@ -116,7 +116,7 @@ edCanvas = document.getElementById('content');
<?php
foreach ($users as $o) :
$o = get_userdata( $O->ID );
if ( $post_author == $o->ID ) $selected = 'selected="selected"';
if ( $post->post_author == $o->ID ) $selected = 'selected="selected"';
else $selected = '';
echo "<option value='$o->ID' $selected>$o->user_login ($o->first_name $o->last_name)</option>";
endforeach;
@ -127,12 +127,12 @@ edCanvas = document.getElementById('content');
<?php endif; ?>
<tr>
<th scope="row" width="25%"><?php _e('Page Order') ?>:</th>
<td><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo $menu_order ?>" /></td>
<td><input name="menu_order" type="text" size="4" id="menu_order" value="<?php echo $post->menu_order ?>" /></td>
</tr>
<tr>
<th scope="row"><?php _e('Delete'); ?>:</th>
<td><?php if ('edit' == $action) : ?>
<input name="deletepost" class="delete" type="submit" id="deletepost" tabindex="10" value="<?php _e('Delete this page') ?>" <?php echo "onclick=\"return confirm('" . sprintf(__("You are about to delete this page \'%s\'\\n \'Cancel\' to stop, \'OK\' to delete."), addslashes($edited_post_title) ) . "')\""; ?> />
<input name="deletepost" class="delete" type="submit" id="deletepost" tabindex="10" value="<?php _e('Delete this page') ?>" <?php echo "onclick=\"return confirm('" . sprintf(__("You are about to delete this page \'%s\'\\n \'Cancel\' to stop, \'OK\' to delete."), addslashes($post->post_title) ) . "')\""; ?> />
<?php endif; ?></td>
</tr>
</table>

View File

@ -64,42 +64,21 @@ case 'edit':
require_once('admin-header.php');
$post = $post_ID = $p = (int) $_GET['post'];
$post_ID = $p = (int) $_GET['post'];
if ( !user_can_edit_post($user_ID, $post_ID) )
die ( __('You are not allowed to edit this post.') );
$postdata = &get_post($post_ID);
$content = $postdata->post_content;
$content = format_to_edit($content);
$content = apply_filters('content_edit_pre', $content);
$excerpt = $postdata->post_excerpt;
$excerpt = format_to_edit($excerpt);
$excerpt = apply_filters('excerpt_edit_pre', $excerpt);
$edited_post_title = format_to_edit($postdata->post_title);
$edited_post_title = apply_filters('title_edit_pre', $edited_post_title);
$post_status = $postdata->post_status;
$comment_status = $postdata->comment_status;
$ping_status = $postdata->ping_status;
$post_password = $postdata->post_password;
$to_ping = $postdata->to_ping;
$pinged = $postdata->pinged;
$post_name = $postdata->post_name;
$post_parent = $postdata->post_parent;
$post_author = $postdata->post_author;
$menu_order = $postdata->menu_order;
if( 'private' == $postdata->post_status && $postdata->post_author != $user_ID )
die ( __('You are not allowed to view other users\' private posts.') );
if ( !user_can_edit_post($user_ID, $post_ID) )
die ( __('You are not allowed to view other users\' private posts.') );
if ($post_status == 'static') {
$page_template = get_post_meta($post_ID, '_wp_page_template', true);
$post = get_post_to_edit($post_ID);
if ($post->post_status == 'static')
include('edit-page-form.php');
} else {
else
include('edit-form-advanced.php');
}
$post = &$postdata;
?>
<div id='preview' class='wrap'>
<h2><?php _e('Post Preview (updated when post is saved)'); ?></h2>
@ -108,8 +87,7 @@ case 'edit':
<div class="storycontent">
<?php
$content = apply_filters('the_content', $post->post_content);
echo $content;
echo apply_filters('the_content', $post->post_content);
?>
</div>
</div>
@ -153,8 +131,6 @@ case 'delete':
if (strstr($sendback, 'post.php')) $sendback = get_settings('siteurl') .'/wp-admin/post.php';
$sendback = preg_replace('|[^a-z0-9-~+_.?#=&;,/:]|i', '', $sendback);
header ('Location: ' . $sendback);
generate_page_rewrite_rules();
do_action('delete_post', $post_id);
break;
case 'editcomment':
@ -405,17 +381,8 @@ default:
</div>
<?php
}
//set defaults
$post_status = 'draft';
$comment_status = get_settings('default_comment_status');
$ping_status = get_settings('default_ping_status');
$post_pingback = get_settings('default_pingback_flag');
$default_post_cat = get_settings('default_category');
$content = wp_specialchars($content);
$content = apply_filters('default_content', $content);
$edited_post_title = apply_filters('default_title', $edited_post_title);
$excerpt = apply_filters('default_excerpt', $excerpt);
$post = get_default_post_to_edit();
include('edit-form-advanced.php');
?>

View File

@ -303,6 +303,11 @@ function wp_delete_post($postid = 0) {
$wpdb->query("DELETE FROM $wpdb->post2cat WHERE post_id = $postid");
$wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = $postid");
if ( 'static' == $post->post_status )
generate_page_rewrite_rules();
do_action('delete_post', $postid);
return $post;
}
@ -654,4 +659,24 @@ function add_ping($post_id, $uri) { // Add a URI to those already pung
return $wpdb->query("UPDATE $wpdb->posts SET pinged = '$new' WHERE ID = $post_id");
}
function generate_page_rewrite_rules() {
global $wpdb;
$posts = $wpdb->get_results("SELECT ID, post_name FROM $wpdb->posts WHERE post_status = 'static' ORDER BY post_parent DESC");
$page_rewrite_rules = array();
if ($posts) {
foreach ($posts as $post) {
// URI => page name
$uri = get_page_uri($post->ID);
$page_rewrite_rules[$uri] = $post->post_name;
}
update_option('page_uris', $page_rewrite_rules);
save_mod_rewrite_rules();
}
}
?>