diff options
Diffstat (limited to 'wp-admin')
37 files changed, 551 insertions, 516 deletions
diff --git a/wp-admin/admin-ajax.php b/wp-admin/admin-ajax.php index 013e375..8d15c9c 100644 --- a/wp-admin/admin-ajax.php +++ b/wp-admin/admin-ajax.php @@ -4,50 +4,45 @@ require_once('includes/admin.php'); define('DOING_AJAX', true); -check_ajax_referer(); if ( !is_user_logged_in() ) die('-1'); function get_out_now() { exit; } add_action( 'shutdown', 'get_out_now', -1 ); -function wp_ajax_meta_row( $pid, $mid, $key, $value ) { - $value = attribute_escape($value); - $key_js = addslashes(wp_specialchars($key, 'double')); - $key = attribute_escape($key); - $r .= "<tr id='meta-$mid'><td valign='top'>"; - $r .= "<input name='meta[$mid][key]' tabindex='6' onkeypress='return killSubmit(\"theList.ajaxUpdater('meta','meta-$mid');\",event);' type='text' size='20' value='$key' />"; - $r .= "</td><td><textarea name='meta[$mid][value]' tabindex='6' rows='2' cols='30'>$value</textarea></td><td align='center'>"; - $r .= "<input name='updatemeta' type='button' class='updatemeta' tabindex='6' value='".attribute_escape(__('Update'))."' onclick='return theList.ajaxUpdater('meta','meta-$mid');' /><br />"; - $r .= "<input name='deletemeta[$mid]' type='submit' onclick=\"return deleteSomething( 'meta', $mid, '"; - $r .= js_escape(sprintf(__("You are about to delete the '%s' custom field on this post.\n'OK' to delete, 'Cancel' to stop."), $key_js)); - $r .= "' );\" class='deletemeta' tabindex='6' value='".attribute_escape(__('Delete'))."' /></td></tr>"; - return $r; -} - $id = (int) $_POST['id']; -switch ( $_POST['action'] ) : +switch ( $action = $_POST['action'] ) : +case 'add-post' : + check_ajax_referer( 'add-post' ); + add_filter( 'post_limits', $limit_filter = create_function( '$a', '$b = split(" ",$a); if ( !isset($b[2]) ) return $a; $start = intval(trim($b[1])) / 20 * 15; if ( !is_int($start) ) return $a; $start += intval(trim($b[2])) - 1; return "LIMIT $start, 1";' ) ); + wp_edit_posts_query( '_POST' ); + $posts_columns = wp_manage_posts_columns(); + ob_start(); + include( 'edit-post-rows.php' ); + $data = ob_get_contents(); + ob_end_clean(); + if ( !preg_match('|<tbody.+?>(.+)</tbody>|s', $data, $matches) ) + my_dump($data); + $data = trim($matches[1]); + $x = new WP_Ajax_Response( array( 'what' => 'post', 'id' => $id, 'data' => $data ) ); + $x->send(); + break; case 'delete-comment' : + check_ajax_referer( "delete-comment_$id" ); if ( !$comment = get_comment( $id ) ) die('0'); if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) ) die('-1'); - if ( wp_delete_comment( $comment->comment_ID ) ) - die('1'); - else die('0'); - break; -case 'delete-comment-as-spam' : - if ( !$comment = get_comment( $id ) ) - die('0'); - if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) ) - die('-1'); + if ( isset($_POST['spam']) && 1 == $_POST['spam'] ) + $r = wp_set_comment_status( $comment->comment_ID, 'spam' ); + else + $r = wp_delete_comment( $comment->comment_ID ); - if ( wp_set_comment_status( $comment->comment_ID, 'spam' ) ) - die('1'); - else die('0'); + die( $r ? '1' : '0' ); break; case 'delete-cat' : + check_ajax_referer( "delete-category_$id" ); if ( !current_user_can( 'manage_categories' ) ) die('-1'); @@ -56,6 +51,7 @@ case 'delete-cat' : else die('0'); break; case 'delete-link' : + check_ajax_referer( "delete-bookmark_$id" ); if ( !current_user_can( 'manage_links' ) ) die('-1'); @@ -64,6 +60,7 @@ case 'delete-link' : else die('0'); break; case 'delete-meta' : + check_ajax_referer( 'change_meta' ); if ( !$meta = get_post_meta_by_id( $id ) ) die('0'); if ( !current_user_can( 'edit_post', $meta->post_id ) ) @@ -73,14 +70,17 @@ case 'delete-meta' : die('0'); break; case 'delete-post' : + check_ajax_referer( "{$action}_$id" ); if ( !current_user_can( 'delete_post', $id ) ) die('-1'); if ( wp_delete_post( $id ) ) die('1'); - else die('0'); + else + die('0'); break; case 'delete-page' : + check_ajax_referer( "{$action}_$id" ); if ( !current_user_can( 'delete_page', $id ) ) die('-1'); @@ -97,15 +97,18 @@ case 'dim-comment' : die('-1'); if ( 'unapproved' == wp_get_comment_status($comment->comment_ID) ) { + check_ajax_referer( "approve-comment_$id" ); if ( wp_set_comment_status( $comment->comment_ID, 'approve' ) ) die('1'); } else { + check_ajax_referer( "unapprove-comment_$id" ); if ( wp_set_comment_status( $comment->comment_ID, 'hold' ) ) die('1'); } die('0'); break; case 'add-category' : // On the Fly + check_ajax_referer( $action ); if ( !current_user_can( 'manage_categories' ) ) die('-1'); $names = explode(',', $_POST['newcat']); @@ -120,12 +123,14 @@ case 'add-category' : // On the Fly $x->add( array( 'what' => 'category', 'id' => $cat_id, - 'data' => "<li id='category-$cat_id'><label for='in-category-$cat_id' class='selectit'><input value='$cat_id' type='checkbox' checked='checked' name='post_category[]' id='in-category-$cat_id'/> $cat_name</label></li>" + 'data' => "<li id='category-$cat_id'><label for='in-category-$cat_id' class='selectit'><input value='$cat_id' type='checkbox' checked='checked' name='post_category[]' id='in-category-$cat_id'/> $cat_name</label></li>", + 'position' => -1 ) ); } $x->send(); break; case 'add-link-category' : // On the Fly + check_ajax_referer( $action ); if ( !current_user_can( 'manage_categories' ) ) die('-1'); $names = explode(',', $_POST['newcat']); @@ -136,18 +141,20 @@ case 'add-link-category' : // On the Fly die('0'); if ( !$cat_id = is_term( $cat_name, 'link_category' ) ) { $cat_id = wp_insert_term( $cat_name, 'link_category' ); - $cat_id = $cat_id['term_id']; } + $cat_id = $cat_id['term_id']; $cat_name = wp_specialchars(stripslashes($cat_name)); $x->add( array( 'what' => 'link-category', 'id' => $cat_id, - 'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='$cat_id' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>" + 'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='$cat_id' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>", + 'position' => -1 ) ); } $x->send(); break; case 'add-cat' : // From Manage->Categories + check_ajax_referer( 'add-category' ); if ( !current_user_can( 'manage_categories' ) ) die('-1'); if ( !$cat = wp_insert_category( $_POST ) ) @@ -155,28 +162,29 @@ case 'add-cat' : // From Manage->Categories if ( !$cat = get_category( $cat ) ) die('0'); $level = 0; - $cat_full_name = $cat->cat_name; + $cat_full_name = $cat->name; $_cat = $cat; - while ( $_cat->category_parent ) { - $_cat = get_category( $_cat->category_parent ); - $cat_full_name = $_cat->cat_name . ' — ' . $cat_full_name; + while ( $_cat->parent ) { + $_cat = get_category( $_cat->parent ); + $cat_full_name = $_cat->name . ' — ' . $cat_full_name; $level++; } $cat_full_name = attribute_escape($cat_full_name); $x = new WP_Ajax_Response( array( 'what' => 'cat', - 'id' => $cat->cat_ID, + 'id' => $cat->term_id, 'data' => _cat_row( $cat, $level, $cat_full_name ), - 'supplemental' => array('name' => $cat_full_name, 'show-link' => sprintf(__( 'Category <a href="#%s">%s</a> added' ), "cat-$cat->cat_ID", $cat_full_name)) + 'supplemental' => array('name' => $cat_full_name, 'show-link' => sprintf(__( 'Category <a href="#%s">%s</a> added' ), "cat-$cat->term_id", $cat_full_name)) ) ); $x->send(); break; case 'add-comment' : + check_ajax_referer( $action ); if ( !current_user_can( 'edit_post', $id ) ) die('-1'); $search = isset($_POST['s']) ? $_POST['s'] : false; - $start = isset($_POST['page']) ? intval($_POST['page']) * 25 : 25; + $start = isset($_POST['page']) ? intval($_POST['page']) * 25 - 1: 24; list($comments, $total) = _wp_get_comment_list( $search, $start, 1 ); @@ -198,58 +206,70 @@ case 'add-comment' : $x->send(); break; case 'add-meta' : - if ( !current_user_can( 'edit_post', $id ) ) - die('-1'); - if ( $id < 0 ) { - $now = current_time('timestamp', 1); - if ( $pid = wp_insert_post( array( - 'post_title' => sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now)) - ) ) ) { - if ( is_wp_error( $pid ) ) - return $pid; - $mid = add_meta( $pid ); - } - else + check_ajax_referer( 'change_meta' ); + $c = 0; + $pid = (int) $_POST['post_id']; + if ( isset($_POST['addmeta']) ) { + if ( !current_user_can( 'edit_post', $pid ) ) + die('-1'); + if ( $pid < 0 ) { + $now = current_time('timestamp', 1); + if ( $pid = wp_insert_post( array( + 'post_title' => sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now)) + ) ) ) { + if ( is_wp_error( $pid ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'data' => $pid + ) ); + $x->send(); + } + $mid = add_meta( $pid ); + } else { + die('0'); + } + } else if ( !$mid = add_meta( $pid ) ) { die('0'); - } else if ( !$mid = add_meta( $id ) ) { - die('0'); - } - - $meta = get_post_meta_by_id( $mid ); - $key = $meta->meta_key; - $value = $meta->meta_value; - $pid = (int) $meta->post_id; + } - $x = new WP_Ajax_Response( array( - 'what' => 'meta', - 'id' => $mid, - 'data' => wp_ajax_meta_row( $pid, $mid, $key, $value ), - 'supplemental' => array('postid' => $pid) - ) ); - $x->send(); - break; -case 'update-meta' : - $mid = (int) array_pop(array_keys($_POST['meta'])); - $key = $_POST['meta'][$mid]['key']; - $value = $_POST['meta'][$mid]['value']; - if ( !$meta = get_post_meta_by_id( $mid ) ) - die('0'); // if meta doesn't exist - if ( !current_user_can( 'edit_post', $meta->post_id ) ) - die('-1'); - if ( $u = update_meta( $mid, $key, $value ) ) { + $meta = get_post_meta_by_id( $mid ); + $pid = (int) $meta->post_id; + $meta = get_object_vars( $meta ); + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, + 'data' => _list_meta_row( $meta, $c ), + 'position' => 1, + 'supplemental' => array('postid' => $pid) + ) ); + } else { + $mid = (int) array_pop(array_keys($_POST['meta'])); + $key = $_POST['meta'][$mid]['key']; + $value = $_POST['meta'][$mid]['value']; + if ( !$meta = get_post_meta_by_id( $mid ) ) + die('0'); // if meta doesn't exist + if ( !current_user_can( 'edit_post', $meta->post_id ) ) + die('-1'); + if ( !$u = update_meta( $mid, $key, $value ) ) + die('1'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). $key = stripslashes($key); $value = stripslashes($value); $x = new WP_Ajax_Response( array( 'what' => 'meta', - 'id' => $mid, - 'data' => wp_ajax_meta_row( $meta->post_id, $mid, $key, $value ), + 'id' => $mid, 'old_id' => $mid, + 'data' => _list_meta_row( array( + 'meta_key' => $key, + 'meta_value' => $value, + 'meta_id' => $mid + ), $c ), + 'position' => 0, 'supplemental' => array('postid' => $meta->post_id) ) ); - $x->send(); } - die('1'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). + $x->send(); break; case 'add-user' : + check_ajax_referer( $action ); if ( !current_user_can('edit_users') ) die('-1'); require_once(ABSPATH . WPINC . '/registration.php'); @@ -261,15 +281,20 @@ case 'add-user' : exit; } $user_object = new WP_User( $user_id ); + $x = new WP_Ajax_Response( array( 'what' => 'user', 'id' => $user_id, 'data' => user_row( $user_object ), - 'supplemental' => array('show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login)) + 'supplemental' => array( + 'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login), + 'role' => $user_object->roles[0] + ) ) ); $x->send(); break; case 'autosave' : // The name of this action is hardcoded in edit_post() + check_ajax_referer( $action ); $_POST['post_content'] = $_POST['content']; $_POST['post_excerpt'] = $_POST['excerpt']; $_POST['post_status'] = 'draft'; @@ -300,6 +325,7 @@ case 'autosave' : // The name of this action is hardcoded in edit_post() die('0'); break; case 'autosave-generate-nonces' : + check_ajax_referer( $action ); $ID = (int) $_POST['post_ID']; if($_POST['post_type'] == 'post') { if(current_user_can('edit_post', $ID)) diff --git a/wp-admin/categories.php b/wp-admin/categories.php index 59ff4eb..6e83a61 100644 --- a/wp-admin/categories.php +++ b/wp-admin/categories.php @@ -102,7 +102,7 @@ $messages[5] = __('Category not updated.'); <th colspan="2" style="text-align: center"><?php _e('Action') ?></th> </tr> </thead> - <tbody id="the-list"> + <tbody id="the-list" class="list:cat"> <?php cat_rows(); ?> diff --git a/wp-admin/edit-category-form.php b/wp-admin/edit-category-form.php index 4696129..cf4cebb 100644 --- a/wp-admin/edit-category-form.php +++ b/wp-admin/edit-category-form.php @@ -9,7 +9,7 @@ if ( ! empty($cat_ID) ) { } else { $heading = __('Add Category'); $submit_text = __('Add Category »'); - $form = '<form name="addcat" id="addcat" method="post" action="categories.php">'; + $form = '<form name="addcat" id="addcat" method="post" action="categories.php" class="add:the-list:">'; $action = 'addcat'; $nonce_action = 'add-category'; do_action('add_category_form_pre', $category); @@ -39,7 +39,7 @@ if ( ! empty($cat_ID) ) { <td><textarea name="category_description" id="category_description" rows="5" cols="50" style="width: 97%;"><?php echo wp_specialchars($category->description); ?></textarea></td> </tr> </table> -<p class="submit"><input type="submit" name="submit" value="<?php echo $submit_text ?>" /></p> +<p class="submit"><input type="submit" class="add:the-list:cat:addcat" name="submit" value="<?php echo $submit_text ?>" /></p> <?php do_action('edit_category_form', $category); ?> </form> </div> diff --git a/wp-admin/edit-comments.php b/wp-admin/edit-comments.php index ab1bdbc..c761e8c 100644 --- a/wp-admin/edit-comments.php +++ b/wp-admin/edit-comments.php @@ -102,24 +102,27 @@ if ('view' == $mode) { $offset = $offset + 1; $start = " start='$offset'"; - echo "<ol id='the-comment-list' class='commentlist' $start>\n"; + echo "<ol id='the-comment-list' class='list:comment commentlist' $start>\n"; $i = 0; foreach ( $comments as $comment ) { - get_comment( $comment ); // Cache it _wp_comment_list_item( $comment->comment_ID, ++$i ); } echo "</ol>\n\n"; if ( $extra_comments ) : ?> <div id="extra-comments" style="display:none"> -<ul id="the-extra-comment-list" class="commentlist"> +<ol id="the-extra-comment-list" class="list:comment commentlist" style="color:red"> <?php foreach ( $extra_comments as $comment ) { get_comment( $comment ); // Cache it - _wp_comment_list_item( $comment->comment_ID, ++$i ); + _wp_comment_list_item( $comment->comment_ID, 0 ); } ?> -</ul> +</ol> +<form action="" method="get" id="get-extra-comments" class="add:the-extra-comment-list:"> +<input type="hidden" name="page" value="<?php echo $page; ?>" /> +<input type="hidden" name="s" value="<?php echo attribute_escape(@$_GET['s']); ?>" /> +<?php wp_nonce_field( 'add-comment', '_ajax_nonce', false ); ?> </div> <?php endif; // $extra_comments ?> @@ -149,7 +152,8 @@ if ( $extra_comments ) : ?> <th scope="col">' . __('Comment Excerpt') . '</th> <th scope="col" colspan="3" style="text-align: center">' . __('Actions') . '</th> </tr> -</thead>'; +</thead> +<tbody id="the-comment-list" class="list:comment">'; foreach ($comments as $comment) { $post = get_post($comment->comment_post_ID); $authordata = get_userdata($post->post_author); @@ -159,7 +163,7 @@ if ( $extra_comments ) : ?> ?> <tr id="comment-<?php echo $comment->comment_ID; ?>" class='<?php echo $class; ?>'> <td style="text-align: center"><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) { ?><input type="checkbox" name="delete_comments[]" value="<?php echo $comment->comment_ID; ?>" /><?php } ?></td> - <td><?php comment_author_link() ?></td> + <td class="comment-author"><?php comment_author_link() ?></td> <td><?php comment_author_email_link() ?></td> <td><a href="edit-comments.php?s=<?php comment_author_IP() ?>&mode=edit"><?php comment_author_IP() ?></a></td> <td><?php comment_excerpt(); ?></td> @@ -173,12 +177,14 @@ if ( $extra_comments ) : ?> <td><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) { echo "<a href='comment.php?action=editcomment&c=$comment->comment_ID' class='edit'>" . __('Edit') . "</a>"; } ?></td> <td><?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) { - echo "<a href=\"comment.php?action=deletecomment&p=".$comment->comment_post_ID."&c=".$comment->comment_ID."\" onclick=\"return deleteSomething( 'comment', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to delete this comment by '%s'. \n 'Cancel' to stop, 'OK' to delete."), $comment->comment_author )) . "', theCommentList );\" class='delete'>" . __('Delete') . "</a> "; + $url = clean_url( wp_nonce_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID", "delete-comment_$comment->comment_ID" ) ); + echo "<a href='$url' class='delete:the-comment-list:comment-$comment->comment_ID delete'>" . __('Delete') . "</a> "; } ?></td> </tr> <?php } // end foreach - ?></table> + ?></tbody> +</table> <p class="submit"><input type="submit" name="delete_button" class="delete" value="<?php _e('Delete Checked Comments »') ?>" onclick="var numchecked = getNumChecked(document.getElementById('deletecomments')); if(numchecked < 1) { alert('<?php echo js_escape(__("Please select some comments to delete")); ?>'); return false } return confirm('<?php echo sprintf(js_escape(__("You are about to delete %s comments permanently \n 'Cancel' to stop, 'OK' to delete.")), "' + numchecked + '"); ?>')" /> <input type="submit" name="spam_button" value="<?php _e('Mark Checked Comments as Spam »') ?>" onclick="var numchecked = getNumChecked(document.getElementById('deletecomments')); if(numchecked < 1) { alert('<?php echo js_escape(__("Please select some comments to mark as spam")); ?>'); return false } return confirm('<?php echo sprintf(js_escape(__("You are about to mark %s comments as spam \n 'Cancel' to stop, 'OK' to mark as spam.")), "' + numchecked + '"); ?>')" /></p> </form> diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php index ab3adff..35726f3 100644 --- a/wp-admin/edit-form-advanced.php +++ b/wp-admin/edit-form-advanced.php @@ -74,8 +74,8 @@ addLoadEvent(focusit); <fieldset id="categorydiv" class="dbx-box"> <h3 class="dbx-handle"><?php _e('Categories') ?></h3> <div class="dbx-content"> -<p id="jaxcat"></p> -<ul id="categorychecklist"><?php dropdown_categories(); ?></ul></div> +<p id="jaxcat"><?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?></p> +<ul id="categorychecklist" class="list:category"><?php dropdown_categories(); ?></ul></div> </fieldset> <fieldset id="commentstatusdiv" class="dbx-box"> diff --git a/wp-admin/edit-link-form.php b/wp-admin/edit-link-form.php index e281d30..920ebe4 100644 --- a/wp-admin/edit-link-form.php +++ b/wp-admin/edit-link-form.php @@ -42,8 +42,8 @@ function xfn_check($class, $value = '', $type = 'check') { <fieldset id="categorydiv" class="dbx-box"> <h3 class="dbx-handle"><?php _e('Categories') ?></h3> <div class="dbx-content"> -<p id="jaxcat"></p> -<ul id="linkcategorychecklist"><?php dropdown_link_categories(get_option('default_link_category')); ?></ul> +<p id="jaxcat"><?php wp_nonce_field( 'add-link-category', '_ajax_nonce', false ); ?></p> +<ul id="categorychecklist" class="list:link-category"><?php dropdown_link_categories(get_option('default_link_category')); ?></ul> </div> </fieldset> diff --git a/wp-admin/edit-pages.php b/wp-admin/edit-pages.php index f263348..d9fa2ff 100644 --- a/wp-admin/edit-pages.php +++ b/wp-admin/edit-pages.php @@ -2,7 +2,7 @@ require_once('admin.php'); $title = __('Pages'); $parent_file = 'edit.php'; -wp_enqueue_script( 'listman' ); +wp_enqueue_script( 'wp-lists' ); require_once('admin-header.php'); $post_stati = array( // array( adj, noun ) @@ -20,9 +20,12 @@ if ( isset($_GET['post_status']) && in_array( $_GET['post_status'], array_keys($ } ?> - +<script> +/* <![CDATA[ */ +jQuery(function($){$('#the-list').wpList();}); +/* ]]> */ +</script> <div class="wrap"> - <h2><?php // Use $_GET instead of is_ since they can override each other $h2_search = isset($_GET['s']) && $_GET['s'] ? ' ' . sprintf(__('matching “%s”'), wp_specialchars( stripslashes( $_GET['s'] ) ) ) : ''; @@ -81,7 +84,7 @@ if ($posts) { <th scope="col" colspan="3" style="text-align: center"><?php _e('Action'); ?></th> </tr> </thead> - <tbody id="the-list"> + <tbody id="the-list" class="list:page"> <?php page_rows(0, 0, $posts, $all); ?> </tbody> </table> diff --git a/wp-admin/edit-post-rows.php b/wp-admin/edit-post-rows.php index b3dc1e9..d41f2df 100644 --- a/wp-admin/edit-post-rows.php +++ b/wp-admin/edit-post-rows.php @@ -1,3 +1,4 @@ +<?php if ( ! defined('ABSPATH') ) die(); ?> <table class="widefat"> <thead> <tr> @@ -8,13 +9,16 @@ </tr> </thead> - <tbody id="the-list"> + <tbody id="the-list" class="list:post"> <?php +$i_post = 0; if ( have_posts() ) { $bgcolor = ''; add_filter('the_title','wp_specialchars'); -while (have_posts()) : the_post(); -$class = ('alternate' == $class) ? '' : 'alternate'; +while (have_posts()) : the_post(); $i_post++; +if ( 16 == $i_post ) + echo "\t</tbody>\n\t<tbody id='the-extra-list' class='list:post' style='display: none'>\n"; // Hack! +$class = ( $i_post > 15 || 'alternate' == $class) ? '' : 'alternate'; global $current_user; $post_owner = ( $current_user->ID == $post->post_author ? 'self' : 'other' ); ?> @@ -90,7 +94,7 @@ foreach($posts_columns as $column_name=>$column_display_name) { case 'control_delete': ?> - <td><?php if ( current_user_can('delete_post',$post->ID) ) { echo "<a href='" . wp_nonce_url("post.php?action=delete&post=$id", 'delete-post_' . $post->ID) . "' class='delete' onclick=\"return deleteSomething( 'post', " . $id . ", '" . js_escape(sprintf(__("You are about to delete this post '%s'.\n'OK' to delete, 'Cancel' to stop."), get_the_title())) . "' );\">" . __('Delete') . "</a>"; } ?></td> + <td><?php if ( current_user_can('delete_post',$post->ID) ) { echo "<a href='" . wp_nonce_url("post.php?action=delete&post=$id", 'delete-post_' . $post->ID) . "' class='delete:the-list:post-$post->ID delete'>" . __('Delete') . "</a>"; } ?></td> <?php break; diff --git a/wp-admin/edit.php b/wp-admin/edit.php index ba4cc04..06ab9ca 100644 --- a/wp-admin/edit.php +++ b/wp-admin/edit.php @@ -3,67 +3,21 @@ require_once('admin.php'); $title = __('Posts'); $parent_file = 'edit.php'; -wp_enqueue_script( 1 == $_GET['c'] ? 'admin-comments' : 'listman' ); +wp_enqueue_script( 'admin-posts' ); +if ( 1 == $_GET['c'] ) + wp_enqueue_script( 'admin-comments' ); require_once('admin-header.php'); -$_GET['m'] = (int) $_GET['m']; -$_GET['cat'] = (int) $_GET['cat']; -$post_stati = array( // array( adj, noun ) - 'publish' => array(__('Published'), __('Published posts')), - 'future' => array(__('Scheduled'), __('Scheduled posts')), - 'pending' => array(__('Pending Review'), __('Pending posts')), - 'draft' => array(__('Draft'), _c('Drafts|manage posts header')), - 'private' => array(__('Private'), __('Private posts')) - ); - -$avail_post_stati = $wpdb->get_col("SELECT DISTINCT post_status FROM $wpdb->posts WHERE post_type = 'post'"); - -$post_status_q = ''; -$post_status_label = __('Posts'); -if ( isset($_GET['post_status']) && in_array( $_GET['post_status'], array_keys($post_stati) ) ) { - $post_status_label = $post_stati[$_GET['post_status']][1]; - $post_status_q = '&post_status=' . $_GET['post_status']; -} +add_filter( 'post_limits', $limit_filter = create_function( '$a', '$b = split(" ",$a); if ( !isset($b[2]) ) return $a; $start = intval(trim($b[1])) / 20 * 15; if ( !is_int($start) ) return $a; return "LIMIT $start, 20";' ) ); +list($post_stati, $avail_post_stati) = wp_edit_posts_query(); +$wp_query->max_num_pages = ceil( $wp_query->found_posts / 15 ); // We grab 20 but only show 15 ( 5 more for ajax extra ) ?> <div class="wrap"> <?php -if ( 'pending' === $_GET['post_status'] ) { - $order = 'ASC'; - $orderby = 'modified'; -} elseif ( 'draft' === $_GET['post_status'] ) { - $order = 'DESC'; - $orderby = 'modified'; -} else { - $order = 'DESC'; - $orderby = 'date'; -} - -wp("what_to_show=posts$post_status_q&posts_per_page=15&order=$order&orderby=$orderby"); - -// define the columns to display, the syntax is 'internal name' => 'display name' -$posts_columns = array(); -$posts_columns['id'] = '<div style="text-align: center">' . __('ID') . '</div>'; -if ( 'draft' === $_GET['post_status'] ) - $posts_columns['modified'] = __('Modified'); -elseif ( 'pending' === $_GET['post_status'] ) - $posts_columns['modified'] = __('Submitted'); -else - $posts_columns['date'] = __('When'); -$posts_columns['title'] = __('Title'); -$posts_columns['categories'] = __('Categories'); -if ( !in_array($_GET['post_status'], array('pending', 'draft', 'future')) ) - $posts_columns['comments'] = '<div style="text-align: center">' . __('Comments') . '</div>'; -$posts_columns['author'] = __('Author'); - -$posts_columns = apply_filters('manage_posts_columns', $posts_columns); - -// you can not edit these at the moment -$posts_columns['control_view'] = ''; -$posts_columns['control_edit'] = ''; -$posts_columns['control_delete'] = ''; +$posts_columns = wp_manage_posts_columns(); ?> @@ -154,6 +108,8 @@ if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ? <?php wp_dropdown_categories('show_option_all='.__('All').'&hide_empty=1&hierarchical=1&show_count=1&selected='.$cat);?> </fieldset> <input type="submit" id="post-query-submit" value="<?php _e('Filter »'); ?>" class="button" /> + <?php wp_nonce_field( 'add-post', '_ajax_nonce', false ); ?> + <input type="button" id="get-extra-button" class="add:the-extra-list:searchform" style="display:none" /> </form> <?php do_action('restrict_manage_posts'); ?> @@ -175,48 +131,21 @@ if ( 1 == count($posts) ) { $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE comment_post_ID = $id AND comment_approved != 'spam' ORDER BY comment_date"); if ($comments) { + // Make sure comments, post, and post_author are cached update_comment_cache($comments); + $post = get_post($id); + $authordata = get_userdata($post->post_author); ?> <h3 id="comments"><?php _e('Comments') ?></h3> -<ol id="the-comment-list" class="commentlist"> +<ol id="the-comment-list" class="list:comment commentlist"> <?php -$i = 0; -foreach ($comments as $comment) { - - ++$i; $class = ''; - $post = get_post($comment->comment_post_ID); - $authordata = get_userdata($post->post_author); - $comment_status = wp_get_comment_status($comment->comment_ID); - if ('unapproved' == $comment_status) - $class .= ' unapproved'; - if ($i % 2) - $class .= ' alternate'; - echo "<li id='comment-$comment->comment_ID' class='$class'>"; -?> -<p><strong><?php comment_author() ?></strong> <?php if ($comment->comment_author_email) { ?>| <?php comment_author_email_link() ?> <?php } if ($comment->comment_author_url && 'http://' != $comment->comment_author_url) { ?> | <?php comment_author_url_link() ?> <?php } ?>| <?php _e('IP:') ?> <a href="edit-comments.php?s=<?php comment_author_IP() ?>&mode=edit"><?php comment_author_IP() ?></a></p> - -<?php comment_text() ?> - -<p><?php comment_date(__('M j, g:i A')); ?> — [ -<?php -if ( current_user_can('edit_post', $comment->comment_post_ID) ) { - echo " <a href='comment.php?action=editcomment&c=".$comment->comment_ID."'>" . __('Edit') . '</a>'; - echo ' | <a href="' . wp_nonce_url('comment.php?action=deletecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . '" onclick="return deleteSomething( \'comment\', ' . $comment->comment_ID . ', \'' . js_escape(sprintf(__("You are about to delete this comment by '%s'.\n'Cancel' to stop, 'OK' to delete."), $comment->comment_author)) . "', theCommentList );\">" . __('Delete') . '</a> '; - if ( ('none' != $comment_status) && ( current_user_can('moderate_comments') ) ) { - echo '<span class="unapprove"> | <a href="' . wp_nonce_url('comment.php?action=unapprovecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'unapprove-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Unapprove') . '</a> </span>'; - echo '<span class="approve"> | <a href="' . wp_nonce_url('comment.php?action=approvecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'approve-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Approve') . '</a> </span>'; - } - echo " | <a href=\"" . wp_nonce_url("comment.php?action=deletecomment&dt=spam&p=" . $comment->comment_post_ID . "&c=" . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . "\" onclick=\"return deleteSomething( 'comment-as-spam', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to mark as spam this comment by '%s'.\n'Cancel' to stop, 'OK' to mark as spam."), $comment->comment_author)) . "', theCommentList );\">" . __('Spam') . "</a> "; -} -?> ] -</p> - </li> - -<?php //end of the loop, don't delete - } // end foreach + $i = 0; + foreach ( $comments as $comment ) { + _wp_comment_list_item( $comment->comment_ID, ++$i ); + } echo '</ol>'; - }//end if comments - ?> + } // end if comments +?> <?php } ?> </div> diff --git a/wp-admin/export.php b/wp-admin/export.php index 69741bc..b3d9495 100644 --- a/wp-admin/export.php +++ b/wp-admin/export.php @@ -182,7 +182,7 @@ echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n"; <!-- 6. WordPress will then import each of the posts, comments, and categories --> <!-- contained in this file into your blog --> -<!-- generator="wordpress/<?php bloginfo_rss('version') ?>" created="<?php echo date('Y-m-d H:i'); ?>"--> +<?php the_generator('export');?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" diff --git a/wp-admin/images/wordpress-logo.png b/wp-admin/images/wordpress-logo.png Binary files differindex 7d8e672..3c852f4 100644 --- a/wp-admin/images/wordpress-logo.png +++ b/wp-admin/images/wordpress-logo.png diff --git a/wp-admin/import/utw.php b/wp-admin/import/utw.php index b321f25..120f50c 100644 --- a/wp-admin/import/utw.php +++ b/wp-admin/import/utw.php @@ -157,7 +157,7 @@ class UTW_Import { // run that funky magic! $tags_added = $this->tag2post(); - echo '<p>' . sprintf( __('Done! <strong>%s</strong> tags where added!'), $tags_added ) . '<br /></p>'; + echo '<p>' . sprintf( __('Done! <strong>%s</strong> tags were added!'), $tags_added ) . '<br /></p>'; echo '<form action="admin.php?import=utw&step=4" method="post">'; wp_nonce_field('import-utw'); @@ -273,4 +273,4 @@ $utw_import = new UTW_Import(); // add it to the import page! register_importer('utw', 'Ultimate Tag Warrior', __('Import Ultimate Tag Warrior tags into the new native tagging structure.'), array($utw_import, 'dispatch')); -?>
\ No newline at end of file +?> diff --git a/wp-admin/import/wp-cat2tag.php b/wp-admin/import/wp-cat2tag.php index ee4104e..d38e17a 100644 --- a/wp-admin/import/wp-cat2tag.php +++ b/wp-admin/import/wp-cat2tag.php @@ -63,7 +63,7 @@ class WP_Categories_to_Tags { print '</ul>'; - print '<p class="submit"><input type="submit" name="maybe_convert_all_cats" value="' . __('Convert All Categories') . '" /> <input type="submit" name="submit" value="' . __('Convert »') . '" /></p>'; + print '<p class="submit"><input type="submit" name="submit" value="' . __('Convert »') . '" /></p>'; print '</form>'; } @@ -140,11 +140,23 @@ class WP_Categories_to_Tags { foreach ( $posts as $post ) { if ( !$wpdb->get_var("SELECT object_id FROM $wpdb->term_relationships WHERE object_id = '$post' AND term_taxonomy_id = '$id'") ) $wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id) VALUES ('$post', '$id')"); + clean_post_cache($post); } } else { + $tt_ids = $wpdb->get_col("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = '{$category->term_id}' AND taxonomy = 'category'"); + if ( $tt_ids ) { + $posts = $wpdb->get_col("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id IN (" . join(',', $tt_ids) . ") GROUP BY object_id"); + foreach ( (array) $posts as $post ) + clean_post_cache($post); + } + // Change the category to a tag. $wpdb->query("UPDATE $wpdb->term_taxonomy SET taxonomy = 'post_tag' WHERE term_id = '{$category->term_id}' AND taxonomy = 'category'"); + $terms = $wpdb->get_col("SELECT term_id FROM $wpdb->term_taxonomy WHERE parent = '{$category->term_id}' AND taxonomy = 'category'"); + foreach ( (array) $terms as $term ) + clean_category_cache($term); + // Set all parents to 0 (root-level) if their parent was the converted tag $wpdb->query("UPDATE $wpdb->term_taxonomy SET parent = 0 WHERE parent = '{$category->term_id}' AND taxonomy = 'category'"); } @@ -160,41 +172,9 @@ class WP_Categories_to_Tags { print '</ul>'; } - function convert_all_confirm() { - print '<div class="narrow">'; - - print '<h3>' . __('Confirm') . '</h3>'; - - print '<p>' . __('You are about to convert all categories to tags. Are you sure you want to continue?') . '</p>'; - - print '<form action="admin.php?import=wp-cat2tag" method="post">'; - wp_nonce_field('import-cat2tag'); - print '<p style="text-align:center" class="submit"><input type="submit" value="' . __('Yes') . '" name="yes_convert_all_cats" /> <input type="submit" value="' . __('No') . '" name="no_dont_do_it" /></p>'; - print '</form>'; - - print '</div>'; - } - - function convert_all() { - global $wpdb; - - $this->populate_all_categories(); - foreach ( $this->all_categories as $category ) - $this->categories_to_convert[] = $category->term_id; - $this->convert_them(); - } - function init() { - if (isset($_POST['maybe_convert_all_cats'])) { - $step = 3; - } elseif (isset($_POST['yes_convert_all_cats'])) { - $step = 4; - } elseif (isset($_POST['no_dont_do_it'])) { - die('no_dont_do_it'); - } else { - $step = (isset($_GET['step'])) ? (int) $_GET['step'] : 1; - } + $step = (isset($_GET['step'])) ? (int) $_GET['step'] : 1; $this->header(); @@ -214,14 +194,6 @@ class WP_Categories_to_Tags { case 2 : $this->convert_them(); break; - - case 3 : - $this->convert_all_confirm(); - break; - - case 4 : - $this->convert_all(); - break; } } diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php index e5911bd..3c4f474 100644 --- a/wp-admin/includes/plugin.php +++ b/wp-admin/includes/plugin.php @@ -86,6 +86,48 @@ function get_plugins() { return $wp_plugins; } +function activate_plugin($plugin) { + $current = get_option('active_plugins'); + $plugin = trim($plugin); + + if ( validate_file($plugin) ) + return new WP_Error('plugin_invalid', __('Invalid plugin.')); + if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) + return new WP_Error('plugin_not_found', __('Plugin file does not exist.')); + + if (!in_array($plugin, $current)) { + wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), 'plugins.php?error=true&plugin=' . $plugin)); // we'll override this later if the plugin can be included without fatal error + ob_start(); + @include(ABSPATH . PLUGINDIR . '/' . $plugin); + $current[] = $plugin; + sort($current); + update_option('active_plugins', $current); + do_action('activate_' . $plugin); + ob_end_clean(); + } + + return null; +} + +function deactivate_plugins($plugins) { + $current = get_option('active_plugins'); + + if(!is_array($plugins)) + $plugins = array($plugins); + + foreach($plugins as $plugin) { + array_splice($current, array_search( $plugin, $current), 1 ); // Array-fu! + do_action('deactivate_' . trim( $plugin )); + } + + update_option('active_plugins', $current); +} + +function deactivate_all_plugins() { + $current = get_option('active_plugins'); + deactivate_plugins($current); +} + // // Menu // diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index e27482c..b88e3b0 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -348,6 +348,8 @@ function add_meta( $post_ID ) { if ( in_array($metakey, $protected) ) return false; + wp_cache_delete($post_ID, 'post_meta'); + $result = $wpdb->query( " INSERT INTO $wpdb->postmeta (post_id,meta_key,meta_value ) @@ -362,6 +364,9 @@ function delete_meta( $mid ) { global $wpdb; $mid = (int) $mid; + $post_id = $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = '$mid'"); + wp_cache_delete($post_id, 'post_meta'); + return $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id = '$mid'" ); } @@ -408,6 +413,9 @@ function update_meta( $mid, $mkey, $mvalue ) { if ( in_array($mkey, $protected) ) return false; + $post_id = $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = '$mid'"); + wp_cache_delete($post_id, 'post_meta'); + $mvalue = maybe_serialize( stripslashes( $mvalue )); $mvalue = $wpdb->escape( $mvalue ); $mid = (int) $mid; @@ -468,4 +476,41 @@ function _relocate_children( $old_ID, $new_ID ) { return $wpdb->query( "UPDATE $wpdb->posts SET post_parent = $new_ID WHERE post_parent = $old_ID" ); } -?>
\ No newline at end of file +function wp_edit_posts_query( $q = '_GET' ) { + global $wpdb; + $$q['m'] = (int) $$q['m']; + $$q['cat'] = (int) $$q['cat']; + $post_stati = array( // array( adj, noun ) + 'draft' => array(__('Draft'), _c('Drafts|manage posts header')), + 'future' => array(__('Scheduled'), __('Scheduled posts')), + 'pending' => array(__('Pending Review'), __('Pending posts')), + 'private' => array(__('Private'), __('Private posts')), + 'publish' => array(__('Published'), __('Published posts')) + ); + + $avail_post_stati = $wpdb->get_col("SELECT DISTINCT post_status FROM $wpdb->posts WHERE post_type = 'post'"); + + $post_status_q = ''; + $post_status_label = _c('Posts|manage posts header'); + if ( isset($$q['post_status']) && in_array( $$q['post_status'], array_keys($post_stati) ) ) { + $post_status_label = $post_stati[$$q['post_status']][1]; + $post_status_q = '&post_status=' . $$q['post_status']; + } + + if ( 'pending' === $$q['post_status'] ) { + $order = 'ASC'; + $orderby = 'modified'; + } elseif ( 'draft' === $$q['post_status'] ) { + $order = 'DESC'; + $orderby = 'modified'; + } else { + $order = 'DESC'; + $orderby = 'date'; + } + + wp("what_to_show=posts$post_status_q&posts_per_page=20&order=$order&orderby=$orderby"); + + return array($post_stati, $avail_post_stati); +} + +?> diff --git a/wp-admin/includes/schema.php b/wp-admin/includes/schema.php index de4e949..d76d5f7 100644 --- a/wp-admin/includes/schema.php +++ b/wp-admin/includes/schema.php @@ -4,7 +4,7 @@ global $wp_queries; $charset_collate = ''; -if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) { +if ( $wpdb->supports_collation() ) { if ( ! empty($wpdb->charset) ) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; if ( ! empty($wpdb->collate) ) @@ -334,11 +334,11 @@ function populate_roles_160() { global $wp_roles; // Add roles - add_role('administrator', __('Administrator')); - add_role('editor', __('Editor')); - add_role('author', __('Author')); - add_role('contributor', __('Contributor')); - add_role('subscriber', __('Subscriber')); + add_role('administrator', _c('Administrator|User role')); + add_role('editor', _c('Editor|User role')); + add_role('author', _c('Author|User role')); + add_role('contributor', _c('Contributor|User role')); + add_role('subscriber', _c('Subscriber|User role')); // Add caps for Administrator role $role = get_role('administrator'); diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php index 1cf9284..c604d4c 100644 --- a/wp-admin/includes/template.php +++ b/wp-admin/includes/template.php @@ -14,10 +14,6 @@ function cat_rows( $parent = 0, $level = 0, $categories = 0 ) { if ( $categories ) { ob_start(); foreach ( $categories as $category ) { - if ( $category->term_id == 0 ) { - $wpdb->query("DELETE FROM $wpdb->terms WHERE term_id = 0"); - continue; - } if ( $category->parent == $parent) { echo "\t" . _cat_row( $category, $level ); if ( isset($children[$category->term_id]) ) @@ -42,9 +38,10 @@ function _cat_row( $category, $level, $name_override = false ) { if ( current_user_can( 'manage_categories' ) ) { $edit = "<a href='categories.php?action=edit&cat_ID=$category->term_id' class='edit'>".__( 'Edit' )."</a></td>"; $default_cat_id = (int) get_option( 'default_category' ); + $default_link_cat_id = (int) get_option( 'default_link_category' ); if ( $category->term_id != $default_cat_id ) - $edit .= "<td><a href='" . wp_nonce_url( "categories.php?action=delete&cat_ID=$category->term_id", 'delete-category_' . $category->term_id ) . "' onclick=\"return deleteSomething( 'cat', $category->term_id, '" . js_escape(sprintf( __("You are about to delete the category '%s'.\nAll posts that were only assigned to this category will be assigned to the '%s' category.\nAll links that were only assigned to this category will be assigned to the '%s' category.\n'OK' to delete, 'Cancel' to stop." ), $category->name, get_catname( $default_cat_id ), get_catname( $default_link_cat_id ) )) . "' );\" class='delete'>".__( 'Delete' )."</a>"; + $edit .= "<td><a href='" . wp_nonce_url( "categories.php?action=delete&cat_ID=$category->term_id", 'delete-category_' . $category->term_id ) . "' class='delete:the-list:cat-$category->term_id delete'>".__( 'Delete' )."</a>"; else $edit .= "<td style='text-align:center'>".__( "Default" ); } else @@ -111,10 +108,6 @@ function get_nested_categories( $default = 0, $parent = 0 ) { $result = array (); if ( is_array( $cats ) ) { foreach ( $cats as $cat) { - if ( $cat == 0 ) { - $wpdb->query("DELETE FROM $wpdb->terms WHERE term_id = 0"); - continue; - } $result[$cat]['children'] = get_nested_categories( $default, $cat); $result[$cat]['cat_ID'] = $cat; $result[$cat]['checked'] = in_array( $cat, $checked_categories ); @@ -171,6 +164,31 @@ function dropdown_link_categories( $default = 0 ) { } } +// define the columns to display, the syntax is 'internal name' => 'display name' +function wp_manage_posts_columns() { + $posts_columns = array(); + $posts_columns['id'] = '<div style="text-align: center">' . __('ID') . '</div>'; + if ( 'draft' === $_GET['post_status'] ) + $posts_columns['modified'] = __('Modified'); + elseif ( 'pending' === $_GET['post_status'] ) + $posts_columns['modified'] = __('Submitted'); + else + $posts_columns['date'] = __('When'); + $posts_columns['title'] = __('Title'); + $posts_columns['categories'] = __('Categories'); + if ( !in_array($_GET['post_status'], array('pending', 'draft', 'future')) ) + $posts_columns['comments'] = '<div style="text-align: center">' . __('Comments') . '</div>'; + $posts_columns['author'] = __('Author'); + $posts_columns = apply_filters('manage_posts_columns', $posts_columns); + + // you can not edit these at the moment + $posts_columns['control_view'] = ''; + $posts_columns['control_edit'] = ''; + $posts_columns['control_delete'] = ''; + + return $posts_columns; +} + function page_rows( $parent = 0, $level = 0, $pages = 0, $hierarchy = true ) { global $wpdb, $class, $post; @@ -197,9 +215,9 @@ function page_rows( $parent = 0, $level = 0, $pages = 0, $hierarchy = true ) { </td> <td><?php the_author() ?></td> <td><?php if ( '0000-00-00 00:00:00' ==$post->post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $post->post_modified ); ?></td> - <td><a href="<?php the_permalink(); ?>" rel="permalink" class="view"><?php _e( 'View' ); ?></a></td> + <td><a href="<?php the_permalink(); ?>" rel="permalink" class="view"><?php _e( 'View' ); ?></a></td> <td><?php if ( current_user_can( 'edit_page', $id ) ) { echo "<a href='page.php?action=edit&post=$id' class='edit'>" . __( 'Edit' ) . "</a>"; } ?></td> - <td><?php if ( current_user_can( 'delete_page', $id ) ) { echo "<a href='" . wp_nonce_url( "page.php?action=delete&post=$id", 'delete-page_' . $id ) . "' class='delete' onclick=\"return deleteSomething( 'page', " . $id . ", '" . js_escape(sprintf( __("You are about to delete the '%s' page.\n'OK' to delete, 'Cancel' to stop." ), get_the_title() ) ) . "' );\">" . __( 'Delete' ) . "</a>"; } ?></td> + <td><?php if ( current_user_can( 'delete_page', $id ) ) { echo "<a href='" . wp_nonce_url( "page.php?action=delete&post=$id", 'delete-page_' . $id ) . "' class='delete:the-list:page-$id delete'>" . __( 'Delete' ) . "</a>"; } ?></td> </tr> <?php @@ -271,38 +289,45 @@ function _wp_get_comment_list( $s = false, $start, $num ) { function _wp_comment_list_item( $id, $alt = 0 ) { global $authordata, $comment, $wpdb; - $id = (int) $id; $comment =& get_comment( $id ); + $id = (int) $comment->comment_ID; $class = ''; $post = get_post($comment->comment_post_ID); $authordata = get_userdata($post->post_author); - $comment_status = wp_get_comment_status($comment->comment_ID); + $comment_status = wp_get_comment_status($id); if ( 'unapproved' == $comment_status ) $class .= ' unapproved'; if ( $alt % 2 ) $class .= ' alternate'; - echo "<li id='comment-$comment->comment_ID' class='$class'>"; + echo "<li id='comment-$id' class='$class'>"; ?> -<p><strong><?php comment_author(); ?></strong> <?php if ($comment->comment_author_email) { ?>| <?php comment_author_email_link() ?> <?php } if ($comment->comment_author_url && 'http://' != $comment->comment_author_url) { ?> | <?php comment_author_url_link() ?> <?php } ?>| <?php _e('IP:') ?> <a href="http://ws.arin.net/cgi-bin/whois.pl?queryinput=<?php comment_author_IP() ?>"><?php comment_author_IP() ?></a></p> +<p><strong class="comment-author"><?php comment_author(); ?></strong> <?php if ($comment->comment_author_email) { ?>| <?php comment_author_email_link() ?> <?php } if ($comment->comment_author_url && 'http://' != $comment->comment_author_url) { ?> | <?php comment_author_url_link() ?> <?php } ?>| <?php _e('IP:') ?> <a href="http://ws.arin.net/cgi-bin/whois.pl?queryinput=<?php comment_author_IP() ?>"><?php comment_author_IP() ?></a></p> <?php comment_text() ?> <p><?php comment_date(__('M j, g:i A')); ?> — [ <?php if ( current_user_can('edit_post', $comment->comment_post_ID) ) { - echo " <a href='comment.php?action=editcomment&c=".$comment->comment_ID."'>" . __('Edit') . '</a>'; - echo ' | <a href="' . wp_nonce_url('comment.php?action=deletecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . '" onclick="return deleteSomething( \'comment\', ' . $comment->comment_ID . ', \'' . js_escape(sprintf(__("You are about to delete this comment by '%s'.\n'Cancel' to stop, 'OK' to delete."), $comment->comment_author)) . "', theCommentList );\">" . __('Delete') . '</a> '; + echo " <a href='comment.php?action=editcomment&c=$id'>" . __('Edit') . '</a>'; + $url = clean_url( wp_nonce_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$id", "delete-comment_$id" ) ); + echo " | <a href='$url' class='delete:the-comment-list:comment-$id'>" . __('Delete') . '</a> '; if ( ('none' != $comment_status) && ( current_user_can('moderate_comments') ) ) { - echo '<span class="unapprove"> | <a href="' . wp_nonce_url('comment.php?action=unapprovecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'unapprove-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Unapprove') . '</a> </span>'; - echo '<span class="approve"> | <a href="' . wp_nonce_url('comment.php?action=approvecomment&p=' . $comment->comment_post_ID . '&c=' . $comment->comment_ID, 'approve-comment_' . $comment->comment_ID) . '" onclick="return dimSomething( \'comment\', ' . $comment->comment_ID . ', \'unapproved\', theCommentList );">' . __('Approve') . '</a> </span>'; + $url = clean_url( wp_nonce_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$id", "unapprove-comment_$id" ) ); + echo "<span class='unapprove'> | <a href='$url' class='dim:the-comment-list:comment-$id:unapproved:FF3333'>" . __('Unapprove') . '</a> </span>'; + $url = clean_url( wp_nonce_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$id", "approve-comment_$id" ) ); + echo "<span class='approve'> | <a href='$url' class='dim:the-comment-list:comment-$id:unapproved:FFFF33:FFFF33'>" . __('Approve') . '</a> </span>'; } - echo " | <a href=\"" . wp_nonce_url("comment.php?action=deletecomment&dt=spam&p=" . $comment->comment_post_ID . "&c=" . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . "\" onclick=\"return deleteSomething( 'comment-as-spam', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to mark as spam this comment by '%s'.\n'Cancel' to stop, 'OK' to mark as spam."), $comment->comment_author)) . "', theCommentList );\">" . __('Spam') . "</a> "; + $url = clean_url( wp_nonce_url( "comment.php?action=deletecomment&dt=spam&p=$comment->comment_post_ID&c=$id", "delete-comment_$id" ) ); + echo " | <a href='$url' class='delete:the-comment-list:comment-$id::spam=1'>" . __('Spam') . '</a> '; } -$post = get_post($comment->comment_post_ID, OBJECT, 'display'); -$post_title = wp_specialchars( $post->post_title, 'double' ); -$post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title; +if ( !is_single() ) { + $post = get_post($comment->comment_post_ID, OBJECT, 'display'); + $post_title = wp_specialchars( $post->post_title, 'double' ); + $post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title; ?> - ] — <a href="<?php echo get_permalink($comment->comment_post_ID); ?>"><?php echo $post_title; ?></a></p> + ] — <a href="<?php echo get_permalink($comment->comment_post_ID); ?>"><?php echo $post_title; ?></a> +<?php } ?> +</p> </li> <?php } @@ -333,7 +358,7 @@ function list_meta( $meta ) { global $post_ID; // Exit if no meta if (!$meta ) { - echo '<tbody id="the-list"><tr style="display: none;"><td> </td></tr></tbody>'; //TBODY needed for list-manipulation JS + echo '<tbody id="the-list" class="list:meta"><tr style="display: none;"><td> </td></tr></tbody>'; //TBODY needed for list-manipulation JS return; } $count = 0; @@ -345,43 +370,47 @@ function list_meta( $meta ) { <th colspan='2'><?php _e( 'Action' ) ?></th> </tr> </thead> + <tbody id='the-list' class='list:meta'> <?php - $r ="\n\t<tbody id='the-list'>"; - foreach ( $meta as $entry ) { - ++ $count; - if ( $count % 2 ) - $style = 'alternate'; - else - $style = ''; - if ('_' == $entry['meta_key'] { 0 } ) - $style .= ' hidden'; - - if ( is_serialized( $entry['meta_value'] ) ) { - if ( is_serialized_string( $entry['meta_value'] ) ) { - // this is a serialized string, so we should display it - $entry['meta_value'] = maybe_unserialize( $entry['meta_value'] ); - } else { - // this is a serialized array/object so we should NOT display it - --$count; - continue; - } - } + foreach ( $meta as $entry ) + echo _list_meta_row( $entry, $count ); + echo "\n\t</tbody>"; +} - $key_js = js_escape( $entry['meta_key'] ); - $entry['meta_key'] = attribute_escape($entry['meta_key']); - $entry['meta_value'] = attribute_escape($entry['meta_value']); - $entry['meta_id'] = (int) $entry['meta_id']; - $r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>"; - $r .= "\n\t\t<td valign='top'><input name='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' /></td>"; - $r .= "\n\t\t<td><textarea name='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>"; - $r .= "\n\t\t<td align='center'><input name='updatemeta' type='submit' class='updatemeta' tabindex='6' value='".attribute_escape(__( 'Update' ))."' /><br />"; - $r .= "\n\t\t<input name='deletemeta[{$entry['meta_id']}]' type='submit' onclick=\"return deleteSomething( 'meta', {$entry['meta_id']}, '"; - $r .= js_escape(sprintf( __("You are about to delete the '%s' custom field on this post.\n'OK' to delete, 'Cancel' to stop." ), $key_js ) ); - $r .= "' );\" class='deletemeta' tabindex='6' value='".attribute_escape(__( 'Delete' ))."' /></td>"; - $r .= "\n\t</tr>"; +function _list_meta_row( $entry, &$count ) { + $r = ''; + ++ $count; + if ( $count % 2 ) + $style = 'alternate'; + else + $style = ''; + if ('_' == $entry['meta_key'] { 0 } ) + $style .= ' hidden'; + + if ( is_serialized( $entry['meta_value'] ) ) { + if ( is_serialized_string( $entry['meta_value'] ) ) { + // this is a serialized string, so we should display it + $entry['meta_value'] = maybe_unserialize( $entry['meta_value'] ); + } else { + // this is a serialized array/object so we should NOT display it + --$count; + return; + } } - echo $r; - echo "\n\t</tbody>"; + + $key_js = js_escape( $entry['meta_key'] ); + $entry['meta_key'] = attribute_escape($entry['meta_key']); + $entry['meta_value'] = attribute_escape($entry['meta_value']); + $entry['meta_id'] = (int) $entry['meta_id']; + $r .= "\n\t<tr id='meta-{$entry['meta_id']}' class='$style'>"; + $r .= "\n\t\t<td valign='top'><input name='meta[{$entry['meta_id']}][key]' tabindex='6' type='text' size='20' value='{$entry['meta_key']}' /></td>"; + $r .= "\n\t\t<td><textarea name='meta[{$entry['meta_id']}][value]' tabindex='6' rows='2' cols='30'>{$entry['meta_value']}</textarea></td>"; + $r .= "\n\t\t<td align='center'><input name='updatemeta' type='submit' tabindex='6' value='".attribute_escape(__( 'Update' ))."' class='add:the-list:meta-{$entry['meta_id']} updatemeta' /><br />"; + $r .= "\n\t\t<input name='deletemeta[{$entry['meta_id']}]' type='submit' "; + $r .= "class='delete:the-list:meta-{$entry['meta_id']} deletemeta' tabindex='6' value='".attribute_escape(__( 'Delete' ))."' />"; + $r .= "<input type='hidden' name='_ajax_nonce' value='$nonce' />"; + $r .= "</td>\n\t</tr>"; + return $r; } function meta_form() { @@ -422,8 +451,11 @@ function meta_form() { <td><textarea id="metavalue" name="metavalue" rows="3" cols="25" tabindex="8"></textarea></td> </tr> +<tr class="submit"><td colspan="3"> + <?php wp_nonce_field( 'change_meta', '_ajax_nonce', false ); ?> + <input type="submit" id="addmetasub" name="addmeta" class="add:the-list:newmeta" tabindex="9" value="<?php _e( 'Add Custom Field »' ) ?>" /> +</td></tr> </table> -<p class="submit"><input type="submit" id="updatemetasub" name="updatemeta" tabindex="9" value="<?php _e( 'Add Custom Field »' ) ?>" /></p> <?php } diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php index 71e6399..b30daef 100644 --- a/wp-admin/includes/upgrade.php +++ b/wp-admin/includes/upgrade.php @@ -541,6 +541,7 @@ function upgrade_230() { // Convert categories to terms. $tt_ids = array(); + $have_tags = false; $categories = $wpdb->get_results("SELECT * FROM $wpdb->categories ORDER BY cat_ID"); foreach ($categories as $category) { $term_id = (int) $category->cat_ID; @@ -587,6 +588,7 @@ function upgrade_230() { } if ( !empty($category->tag_count) ) { + $have_tags = true; $count = (int) $category->tag_count; $taxonomy = 'post_tag'; $wpdb->query("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ('$term_id', '$taxonomy', '$description', '$parent', '$count')"); @@ -601,7 +603,11 @@ function upgrade_230() { } } - $posts = $wpdb->get_results("SELECT * FROM $wpdb->post2cat"); + $select = 'post_id, category_id'; + if ( $have_tags ) + $select .= ', rel_type'; + + $posts = $wpdb->get_results("SELECT $select FROM $wpdb->post2cat GROUP BY post_id, category_id"); foreach ( $posts as $post ) { $post_id = (int) $post->post_id; $term_id = (int) $post->category_id; @@ -666,7 +672,7 @@ function upgrade_230() { // Set default to the last category we grabbed during the upgrade loop. update_option('default_link_category', $default_link_cat); } else { - $links = $wpdb->get_results("SELECT * FROM $wpdb->link2cat"); + $links = $wpdb->get_results("SELECT link_id, category_id FROM $wpdb->link2cat GROUP BY link_id, category_id"); foreach ( $links as $link ) { $link_id = (int) $link->link_id; $term_id = (int) $link->category_id; @@ -1010,7 +1016,6 @@ function dbDelta($queries, $execute = true) { } // Add the column list to the index create string $index_string .= ' ('.$index_columns.')'; - error_log("Index string: $index_string", 0); if(!(($aindex = array_search($index_string, $indices)) === false)) { unset($indices[$aindex]); //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br />Found index:".$index_string."</pre>\n"; @@ -1248,12 +1253,10 @@ function translate_level_to_role($level) { } function wp_check_mysql_version() { - global $wp_version; - - // Make sure the server has MySQL 4.0 - $mysql_version = preg_replace('|[^0-9\.]|', '', @mysql_get_server_info()); - if ( version_compare($mysql_version, '4.0.0', '<') ) - die(sprintf(__('<strong>ERROR</strong>: WordPress %s requires MySQL 4.0.0 or higher'), $wp_version)); + global $wpdb; + $result = $wpdb->check_database_version(); + if ( is_wp_error( $result ) ) + die( $result->get_error_message() ); } function maybe_disable_automattic_widgets() { diff --git a/wp-admin/includes/upload.php b/wp-admin/includes/upload.php index 61b0302..c66feeb 100644 --- a/wp-admin/includes/upload.php +++ b/wp-admin/includes/upload.php @@ -31,6 +31,9 @@ function wp_upload_display( $dims = false, $href = '' ) { $src = wp_make_link_relative( $src_base ); $src_base = str_replace($src, '', $src_base); + if ( !trim($post_title) ) + $post_title = basename($src); + $r = ''; if ( $href ) @@ -39,7 +42,9 @@ function wp_upload_display( $dims = false, $href = '' ) { $r .= "\t\t\t$innerHTML"; if ( $href ) $r .= "</a>\n"; - $r .= "\t\t\t\t<span class='upload-file-size'>".size_format(filesize($filesystem_path))."</span>\n"; + $size = @filesize($filesystem_path); + if ( !empty($size) ) + $r .= "\t\t\t\t<span class='upload-file-size'>".size_format($size)."</span>\n"; $r .= "\n\t\t<div class='upload-file-data'>\n\t\t\t<p>\n"; $r .= "\t\t\t\t<input type='hidden' name='attachment-url-$id' id='attachment-url-$id' value='$src' />\n"; $r .= "\t\t\t\t<input type='hidden' name='attachment-url-base-$id' id='attachment-url-base-$id' value='$src_base' />\n"; diff --git a/wp-admin/includes/user.php b/wp-admin/includes/user.php index ca15057..bd017a4 100644 --- a/wp-admin/includes/user.php +++ b/wp-admin/includes/user.php @@ -87,7 +87,7 @@ function edit_user( $user_id = 0 ) { $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter your password twice.' )); } else { if ((empty ( $pass1 ) && !empty ( $pass2 ) ) || (empty ( $pass2 ) && !empty ( $pass1 ) ) ) - $errors->add( 'pass', __( "<strong>ERROR</strong>: you typed your new password only once." )); + $errors->add( 'pass', __( '<strong>ERROR</strong>: You entered your new password only once.' )); } /* Check for "\" in password */ @@ -96,23 +96,23 @@ function edit_user( $user_id = 0 ) { /* checking the password has been typed twice the same */ if ( $pass1 != $pass2 ) - $errors->add( 'pass', __( '<strong>ERROR</strong>: Please type the same password in the two password fields.' )); + $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter the same password in the two password fields.' )); if (!empty ( $pass1 )) $user->user_pass = $pass1; if ( !$update && !validate_username( $user->user_login ) ) - $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is invalid. Please enter a valid username.' )); + $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is invalid. Please enter a valid username.' )); if (!$update && username_exists( $user->user_login )) - $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' )); + $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' )); /* checking e-mail address */ if ( empty ( $user->user_email ) ) { - $errors->add( 'user_email', __( "<strong>ERROR</strong>: please type an e-mail address" )); + $errors->add( 'user_email', __( '<strong>ERROR</strong>: Please enter an e-mail address.' )); } else if (!is_email( $user->user_email ) ) { - $errors->add( 'user_email', __( "<strong>ERROR</strong>: the email address isn't correct" )); + $errors->add( 'user_email', __( "<strong>ERROR</strong>: The e-mail address isn't correct." )); } if ( $errors->get_error_codes() ) diff --git a/wp-admin/js/cat.js b/wp-admin/js/cat.js index e697e9b..9cb81cf 100644 --- a/wp-admin/js/cat.js +++ b/wp-admin/js/cat.js @@ -1,11 +1,4 @@ -addLoadEvent(function(){catList=new listMan('categorychecklist');catList.ajaxRespEl='jaxcat';catList.topAdder=1;catList.alt=0;catList.showLink=0;}); -addLoadEvent(newCatAddIn); -function newCatAddIn() { - var jaxcat = $('jaxcat'); - if ( !jaxcat ) - return false; - // These multiple blank hidden inputs are needed: https://bugzilla.mozilla.org/show_bug.cgi?id=377815 , #3895 , #4664 - Element.update(jaxcat,'<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" id="catadd" value="' + catL10n.add + '"/><input type="hidden"/><input type="hidden"/><span id="howto">' + catL10n.how + '</span></span>'); - $('newcat').onkeypress = function(e) { return killSubmit("catList.ajaxAdder('category','jaxcat');", e); }; - $('catadd').onclick = function() { catList.ajaxAdder('category', 'jaxcat'); }; -} +jQuery( function($) { + $('#jaxcat').prepend('<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" class="add:categorychecklist:jaxcat" id="catadd" value="' + catL10n.add + '"/><input type="hidden"/><input type="hidden"/><span id="howto">' + catL10n.how + '</span></span><span id="cat-ajax-response"></span>') + var a = $('#categorychecklist').wpList( { alt: '', response: 'cat-ajax-response' } ); +} ); diff --git a/wp-admin/js/categories.js b/wp-admin/js/categories.js index 3cee6c6..23a67c5 100644 --- a/wp-admin/js/categories.js +++ b/wp-admin/js/categories.js @@ -1,16 +1,18 @@ -addLoadEvent(function() { - if (!theList.theList) return false; - document.forms.addcat.submit.onclick = function(e) {return killSubmit('theList.ajaxAdder("cat", "addcat");', e); }; - theList.addComplete = function(what, where, update, transport) { - var name = getNodeValue(transport.responseXML, 'name').unescapeHTML(); - var id = transport.responseXML.getElementsByTagName(what)[0].getAttribute('id'); - var options = document.forms['addcat'].category_parent.options; +jQuery(function($) { + var options = document.forms['addcat'].category_parent.options; + + var addAfter = function( r, settings ) { + var name = $("<span>" + $('name', r).text() + "</span>").html(); + var id = $('cat', r).attr('id'); options[options.length] = new Option(name, id); - }; - theList.delComplete = function(what, id) { - var options = document.forms['addcat'].category_parent.options; + } + + var delAfter = function( r, settings ) { + var id = $('cat', r).attr('id'); for ( var o = 0; o < options.length; o++ ) if ( id == options[o].value ) options[o] = null; - }; + } + + var a = $('#the-list').wpList( { addAfter: addAfter, delAfter: delAfter } ); }); diff --git a/wp-admin/js/custom-fields.js b/wp-admin/js/custom-fields.js index ad7a2db..8f2b1a5 100644 --- a/wp-admin/js/custom-fields.js +++ b/wp-admin/js/custom-fields.js @@ -1,26 +1,33 @@ -function customFieldsOnComplete( what, where, update, transport ) { - var pidEl = $('post_ID'); - pidEl.name = 'post_ID'; - pidEl.value = getNodeValue(transport.responseXML, 'postid'); - var aEl = $('hiddenaction') - if ( aEl.value == 'post' ) aEl.value = 'postajaxpost'; -} -addLoadEvent(customFieldsAddIn); -function customFieldsAddIn() { - theList.showLink=0; - theList.addComplete = customFieldsOnComplete; - if (!theList.theList) return false; - inputs = theList.theList.getElementsByTagName('input'); - for ( var i=0; i < inputs.length; i++ ) { - if ('text' == inputs[i].type) { - inputs[i].setAttribute('autocomplete', 'off'); - inputs[i].onkeypress = function(e) {return killSubmit('theList.ajaxUpdater("meta", "meta-' + parseInt(this.name.slice(5),10) + '");', e); }; - } - if ('updatemeta' == inputs[i].className) { - inputs[i].onclick = function(e) {return killSubmit('theList.ajaxUpdater("meta", "meta-' + parseInt(this.parentNode.parentNode.id.slice(5),10) + '");', e); }; - } +jQuery( function($) { + var before = function() { + var nonce = $('#newmeta [@name=_ajax_nonce]').val(); + var postId = $('#post_ID').val(); + if ( !nonce || !postId ) { return false; } + return [nonce,postId]; } - $('metakeyinput').onkeypress = function(e) {return killSubmit('theList.inputData+="&id="+$("post_ID").value;theList.ajaxAdder("meta", "newmeta");', e); }; - $('updatemetasub').onclick = function(e) {return killSubmit('theList.inputData+="&id="+$("post_ID").value;theList.ajaxAdder("meta", "newmeta");', e); }; -} + var addBefore = function( s ) { + var b = before(); + if ( !b ) { return false; } + s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1]; + return s; + }; + + var addAfter = function( r, s ) { + var postId = $('postid', r).text(); + if ( !postId ) { return; } + $('#post_ID').attr( 'name', 'post_ID' ).val( postId ); + var h = $('#hiddenaction'); + if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); } + }; + + var delBefore = function( s ) { + var b = before(); if ( !b ) return false; + s.data._ajax_nonce = b[0]; s.data.post_id = b[1]; + return s; + } + + $('#the-list') + .wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } ) + .find('.updatemeta, .deletemeta').attr( 'type', 'button' ); +} ); diff --git a/wp-admin/js/edit-comments.js b/wp-admin/js/edit-comments.js index e1fc68f..a185774 100644 --- a/wp-admin/js/edit-comments.js +++ b/wp-admin/js/edit-comments.js @@ -1,59 +1,26 @@ -addLoadEvent(function() { - theCommentList = new listMan('the-comment-list'); - if ( !theCommentList ) - return false; +var list; var extra; +jQuery(function($) { - theExtraCommentList = new listMan('the-extra-comment-list'); - if ( theExtraCommentList ) { - theExtraCommentList.showLink = 0; - theExtraCommentList.altOffset = 1; - if ( theExtraCommentList.theList && theExtraCommentList.theList.childNodes ) - var commentNum = $A(theExtraCommentList.theList.childNodes).findAll( function(i) { return Element.visible(i) } ).length; - else - var commentNum = 0; - var urlQ = document.location.href.split('?'); - var params = urlQ[1] ? urlQ[1].toQueryParams() : []; - var search = params['s'] ? params['s'] : ''; - var page = params['apage'] ? params['apage'] : 1; - } +var dimAfter = function( r, settings ) { + var a = $('#awaitmod'); + a.html( parseInt(a.html(),10) + ( $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1 ) ); +} - theCommentList.dimComplete = function(what,id,dimClass) { - var m = document.getElementById('awaitmod'); - if ( document.getElementById(what + '-' + id).className.match(dimClass) ) - m.innerHTML = parseInt(m.innerHTML,10) + 1; - else - m.innerHTML = parseInt(m.innerHTML,10) - 1; +var delAfter = function( r, settings ) { + var a = $('#awaitmod'); + if ( $('#' + settings.element).is('.unapproved') && parseInt(a.html(),10) > 0 ) { + a.html( parseInt(a.html(),10) - 1 ); } - theCommentList.delComplete = function(what,id) { - var m = document.getElementById('awaitmod'); - what = what.split('-')[0]; - if ( document.getElementById(what + '-' + id).className.match('unapproved') ) - m.innerHTML = parseInt(m.innerHTML,10) - 1; - if ( theExtraCommentList && commentNum ) { - var theMover = theExtraCommentList.theList.childNodes[0]; - Element.removeClassName(theMover,'alternate'); - theCommentList.theList.appendChild(theMover); - theExtraCommentList.inputData += '&page=' + page; - if ( search ) - theExtraCommentList.inputData += '&s=' + search; // trust the URL not the search box - theExtraCommentList.addComplete = function() { - if ( theExtraCommentList.theList.childNodes ) - var commentNum = $A(theExtraCommentList.theList.childNodes).findAll( function(i) { return Element.visible(i) } ).length; - else - var commentNum = 0; - } - theExtraCommentList.ajaxAdder( 'comment', 'ajax-response' ); // Dummy Request - } + if ( extra.size() == 0 || extra.children().size() == 0 ) { + return; } - if ( theList ) // the post list: edit.php - theList.delComplete = function() { - var comments = document.getElementById('comments'); - var commdel = encloseFunc(function(a){a.parentNode.removeChild(a);},comments); - var listdel = encloseFunc(function(a){a.parentNode.removeChild(a);},theCommentList.theList); - setTimeout(commdel,705); - setTimeout(listdel,705); - } -}); + list[0].wpList.add( extra.children(':eq(0)').remove().clone() ); + $('#get-extra-comments').submit(); +} + +extra = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } ); +list = $('#the-comment-list').wpList( { dimAfter : dimAfter, delAfter : delAfter, addColor: 'none' } ); +} ); diff --git a/wp-admin/js/edit-posts.js b/wp-admin/js/edit-posts.js new file mode 100644 index 0000000..c85fba9 --- /dev/null +++ b/wp-admin/js/edit-posts.js @@ -0,0 +1,22 @@ +jQuery(function($) { +var delAfter; var extra; var list; + +if ( document.location.href.match(/(\?|&)c=/) ) + delAfter = function() { $('#comments, #the-comment-list').remove(); } +else + delAfter = function() { + list[0].wpList.add( extra.children(':eq(0)').remove().clone() ); + $('#get-extra-button').click(); + } + +var addBefore = function ( settings ) { + var q = document.location.href.split('?'); + if ( q[1] ) + settings.data += '&' + q[1]; + return settings; +} + +extra = $('#the-extra-list').wpList( { alt: '', addBefore: addBefore, addColor: 'none', delColor: 'none' } ); +list = $('#the-list').wpList( { delAfter: delAfter, addColor: 'none' } ); + +} ); diff --git a/wp-admin/js/link-cat.js b/wp-admin/js/link-cat.js index a0775ce..e69de29 100644 --- a/wp-admin/js/link-cat.js +++ b/wp-admin/js/link-cat.js @@ -1,10 +0,0 @@ -addLoadEvent(function(){linkcatList=new listMan('linkcategorychecklist');linkcatList.ajaxRespEl='jaxcat';linkcatList.topAdder=1;linkcatList.alt=0;linkcatList.showLink=0;}); -addLoadEvent(newLinkCatAddIn); -function newLinkCatAddIn() { - var jaxcat = $('jaxcat'); - if ( !jaxcat ) - return false; - Element.update(jaxcat,'<span id="ajaxcat"><input type="text" name="newcat" id="newcat" size="16" autocomplete="off"/><input type="button" name="Button" id="catadd" value="' + linkcatL10n.add + '"/><input type="hidden"/><span id="howto">' + linkcatL10n.how + '</span></span>'); - $('newcat').onkeypress = function(e) { return killSubmit("linkcatList.ajaxAdder('link-category','jaxcat');", e); }; - $('catadd').onclick = function() { linkcatList.ajaxAdder('link-category', 'jaxcat'); }; -} diff --git a/wp-admin/js/users.js b/wp-admin/js/users.js index f249f65..5b89d0f 100644 --- a/wp-admin/js/users.js +++ b/wp-admin/js/users.js @@ -1,21 +1,22 @@ -addLoadEvent(function() { - theListEls = document.getElementsByTagName('tbody'); - theUserLists = new Array(); - for ( var l = 0; l < theListEls.length; l++ ) { - if ( theListEls[l].id ) - theUserLists[theListEls[l].id] = new listMan(theListEls[l].id); - } - addUserInputs = document.getElementById('adduser').getElementsByTagName('input'); - for ( var i = 0; i < addUserInputs.length; i++ ) { - addUserInputs[i].onkeypress = function(e) { return killSubmit('addUserSubmit();', e); } - } - document.getElementById('addusersub').onclick = function(e) { return killSubmit('addUserSubmit();', e); } -} -); +jQuery( function($) { + var userLists; var list; var addBefore; var addAfter; -function addUserSubmit() { - var roleEl = document.getElementById('role'); - var role = roleEl.options[roleEl.selectedIndex].value; - if ( !theUserLists['role-' + role] ) return true; - return theUserLists['role-' + role].ajaxAdder('user', 'adduser'); -} + addBefore = function( s ) { + if ( $( '#role-' + $('#role').val() ).size() ) + return s; + return false; + }; + + addAfter = function( r, s ) { + var roleTable = $( '#role-' + $('role', r).text() ); + + var e = $('#user-' + $('user', r).attr('id') ); + if ( !roleTable.size() ) { return; } + if ( !e.size() ) { return; } + + roleTable[0].wpList.add(e.remove().clone()); + }; + + userLists = $('.user-list').wpList(); + list = $('#user-list').wpList( { addBefore: addBefore, addAfter: addAfter } ); +} ); diff --git a/wp-admin/link-add.php b/wp-admin/link-add.php index 2b06d8e..1e48fe8 100644 --- a/wp-admin/link-add.php +++ b/wp-admin/link-add.php @@ -13,7 +13,7 @@ wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', wp_enqueue_script( array('xfn', 'dbx-admin-key?pagenow=link.php') ); if ( current_user_can( 'manage_categories' ) ) - wp_enqueue_script( 'ajaxlinkcat' ); + wp_enqueue_script( 'ajaxcat' ); require('admin-header.php'); ?> diff --git a/wp-admin/link-import.php b/wp-admin/link-import.php index e20a464..8dd2866 100644 --- a/wp-admin/link-import.php +++ b/wp-admin/link-import.php @@ -45,10 +45,10 @@ switch ($step) { <p style="clear: both; margin-top: 1em;"><?php _e('Now select a category you want to put these links in.') ?><br /> <?php _e('Category:') ?> <select name="cat_id"> <?php -$categories = get_categories('hide_empty=0'); +$categories = get_terms('link_category', 'get=all'); foreach ($categories as $category) { ?> -<option value="<?php echo $category->cat_ID; ?>"><?php echo wp_specialchars(apply_filters('link_category', $category->cat_name)); ?></option> +<option value="<?php echo $category->term_id; ?>"><?php echo wp_specialchars(apply_filters('link_category', $category->name)); ?></option> <?php } // end foreach ?> @@ -98,7 +98,7 @@ foreach ($categories as $category) { } else { $opml = file_get_contents($opml_url); } - + include_once('link-parse-opml.php'); $link_count = count($names); @@ -123,7 +123,7 @@ else } // end else if ( ! $blogrolling ) - apply_filters( 'wp_delete_file', $opml_url); + apply_filters( 'wp_delete_file', $opml_url); @unlink($opml_url); ?> </div> diff --git a/wp-admin/link-manager.php b/wp-admin/link-manager.php index ade3143..d9240de 100644 --- a/wp-admin/link-manager.php +++ b/wp-admin/link-manager.php @@ -6,7 +6,7 @@ require_once ('admin.php'); -wp_enqueue_script( 'listman' ); +wp_enqueue_script( 'wp-lists' ); wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]')); @@ -46,7 +46,7 @@ switch ($order_by) { } ?> <script type="text/javascript"> -<!-- +/* <![CDATA[ */ function checkAll(form) { for (i = 0, n = form.elements.length; i < n; i++) { @@ -58,7 +58,10 @@ function checkAll(form) } } } -//--> + +jQuery(function($){$('#the-list').wpList();}); + +/* ]]> */ </script> <?php @@ -128,7 +131,7 @@ if ( $links ) { <th style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById('links'));" /></th> </tr> </thead> - <tbody id="the-list"> + <tbody id="the-list" class="list:link"> <?php foreach ($links as $link) { $link = sanitize_bookmark($link); @@ -176,8 +179,8 @@ if ( $links ) { ?><td align='center'><?php echo $visible; ?></td><?php break; case 'action': - echo '<td><a href="link.php?link_id='.$link->link_id.'&action=edit" class="edit">'.__('Edit').'</a></td>'; - echo '<td><a href="' . wp_nonce_url('link.php?link_id='.$link->link_id.'&action=delete', 'delete-bookmark_' . $link->link_id ) . '"'." onclick=\"return deleteSomething( 'link', $link->link_id , '".js_escape(sprintf(__("You are about to delete the '%s' link to %s.\n'Cancel' to stop, 'OK' to delete."), $link->link_name, $link->link_url )).'\' );" class="delete">'.__('Delete').'</a></td>'; + echo "<td><a href='link.php?link_id=$link->link_id&action=edit' class='edit'>" . __('Edit') . '</a></td>'; + echo "<td><a href='" . wp_nonce_url('link.php?link_id='.$link->link_id.'&action=delete', 'delete-bookmark_' . $link->link_id ) . "' class='delete:the-list:link-$link->link_id delete'>" . __('Delete') . '</a></td>'; break; default: ?> diff --git a/wp-admin/link.php b/wp-admin/link.php index 464943a..383f6e4 100644 --- a/wp-admin/link.php +++ b/wp-admin/link.php @@ -3,6 +3,9 @@ require_once ('admin.php'); wp_reset_vars(array('action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'order_by', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]')); +if ( ! current_user_can('manage_links') ) + wp_die( __('You do not have sufficient permissions to edit the links for this blog.') ); + if ('' != $_POST['deletebookmarks']) $action = 'deletebookmarks'; if ('' != $_POST['move']) @@ -13,13 +16,9 @@ if ('' != $_POST['linkcheck']) $this_file = 'link-manager.php'; switch ($action) { - case 'deletebookmarks' : + case 'deletebookmarks' : check_admin_referer('bulk-bookmarks'); - // check the current user's level first. - if (!current_user_can('manage_links')) - wp_die(__('Cheatin’ uh?')); - //for each link id (in $linkcheck[]) change category to selected value if (count($linkcheck) == 0) { wp_redirect($this_file); @@ -41,10 +40,6 @@ switch ($action) { case 'move' : check_admin_referer('bulk-bookmarks'); - // check the current user's level first. - if (!current_user_can('manage_links')) - wp_die(__('Cheatin’ uh?')); - //for each link id (in $linkcheck[]) change category to selected value if (count($linkcheck) == 0) { wp_redirect($this_file); @@ -63,7 +58,7 @@ switch ($action) { add_link(); - wp_redirect(wp_get_referer().'?added=true'); + wp_redirect( wp_get_referer() . '?added=true' ); exit; break; @@ -81,9 +76,6 @@ switch ($action) { $link_id = (int) $_GET['link_id']; check_admin_referer('delete-bookmark_' . $link_id); - if (!current_user_can('manage_links')) - wp_die(__('Cheatin’ uh?')); - wp_delete_link($link_id); wp_redirect($this_file); @@ -97,21 +89,18 @@ switch ($action) { $parent_file = 'link-manager.php'; $submenu_file = 'link-manager.php'; $title = __('Edit Link'); - include_once ('admin-header.php'); - if (!current_user_can('manage_links')) - wp_die(__('You do not have sufficient permissions to edit the links for this blog.')); $link_id = (int) $_GET['link_id']; if (!$link = get_link_to_edit($link_id)) wp_die(__('Link not found.')); + include_once ('admin-header.php'); include ('edit-link-form.php'); + include ('admin-footer.php'); break; default : break; } - -include ('admin-footer.php'); ?> diff --git a/wp-admin/page.php b/wp-admin/page.php index 7a373e9..c68901d 100644 --- a/wp-admin/page.php +++ b/wp-admin/page.php @@ -108,10 +108,14 @@ case 'editpost': } else { if ($_POST['save']) { $location = "page.php?action=edit&post=$page_ID"; - } elseif ($_POST['updatemeta']) { - $location = wp_get_referer() . '&message=2#postcustom'; + } elseif ($_POST['addemeta']) { + $location = add_query_arg( 'message', 2, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; } elseif ($_POST['deletemeta']) { - $location = wp_get_referer() . '&message=3#postcustom'; + $location = add_query_arg( 'message', 3, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; } elseif (!empty($_POST['referredby']) && $_POST['referredby'] != wp_get_referer()) { $location = $_POST['referredby']; if ( $_POST['referredby'] == 'redo' ) diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index d2c7d48..5e7bcf2 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -11,22 +11,9 @@ if( $menu_perms[ 'plugins' ] != 1 ) if ( isset($_GET['action']) ) { if ('activate' == $_GET['action']) { check_admin_referer('activate-plugin_' . $_GET['plugin']); - $current = get_option('active_plugins'); - $plugin = trim($_GET['plugin']); - if ( validate_file($plugin) ) - wp_die(__('Invalid plugin.')); - if ( ! file_exists(ABSPATH . PLUGINDIR . '/' . $plugin) ) - wp_die(__('Plugin file does not exist.')); - if (!in_array($plugin, $current)) { - wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), 'plugins.php?error=true&plugin=' . $plugin)); // we'll override this later if the plugin can be included without fatal error - ob_start(); - @include(ABSPATH . PLUGINDIR . '/' . $plugin); - $current[] = $plugin; - sort($current); - update_option('active_plugins', $current); - do_action('activate_' . $plugin); - ob_end_clean(); - } + $result = activate_plugin($_GET['plugin']); + if( is_wp_error( $result ) ) + wp_die( $result->get_error_message() ); wp_redirect('plugins.php?activate=true'); // overrides the ?error=true one above } elseif ('error_scrape' == $_GET['action']) { $plugin = trim($_GET['plugin']); @@ -38,21 +25,11 @@ if ( isset($_GET['action']) ) { include(ABSPATH . PLUGINDIR . '/' . $plugin); } elseif ('deactivate' == $_GET['action']) { check_admin_referer('deactivate-plugin_' . $_GET['plugin']); - $current = get_option('active_plugins'); - array_splice($current, array_search( $_GET['plugin'], $current), 1 ); // Array-fu! - update_option('active_plugins', $current); - do_action('deactivate_' . trim( $_GET['plugin'] )); + deactivate_plugins($_GET['plugin']); wp_redirect('plugins.php?deactivate=true'); } elseif ($_GET['action'] == 'deactivate-all') { check_admin_referer('deactivate-all'); - $current = get_option('active_plugins'); - - foreach ($current as $plugin) { - array_splice($current, array_search($plugin, $current), 1); - do_action('deactivate_' . $plugin); - } - - update_option('active_plugins', array()); + deactivate_all_plugins(); wp_redirect('plugins.php?deactivate-all=true'); } exit; @@ -153,6 +130,7 @@ if (empty($plugins)) { if ( $style != '' ) $style = 'class="' . $style . '"'; + $author = ( empty($plugin_data['Author']) ) ? '' : ' <cite>' . sprintf( __('By %s'), $plugin_data['Author'] ) . '.</cite>'; echo " <tr $style> @@ -162,6 +140,7 @@ if (empty($plugins)) { <td class='togl'>$toggle</td>"; echo" </tr>"; + do_action( 'after_plugin_row', $plugin_file ); } ?> diff --git a/wp-admin/post.php b/wp-admin/post.php index 680f8ab..4609bae 100644 --- a/wp-admin/post.php +++ b/wp-admin/post.php @@ -121,10 +121,14 @@ case 'editpost': if ($_POST['save']) { $location = "post.php?action=edit&post=$post_ID"; - } elseif ($_POST['updatemeta']) { - $location = wp_get_referer() . '&message=2#postcustom'; + } elseif ($_POST['addemeta']) { + $location = add_query_arg( 'message', 2, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; } elseif ($_POST['deletemeta']) { - $location = wp_get_referer() . '&message=3#postcustom'; + $location = add_query_arg( 'message', 3, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; } elseif (!empty($referredby) && $referredby != $referer) { $location = $_POST['referredby']; if ( $_POST['referredby'] == 'redo' ) diff --git a/wp-admin/setup-config.php b/wp-admin/setup-config.php index 139ccd3..976c5ac 100644 --- a/wp-admin/setup-config.php +++ b/wp-admin/setup-config.php @@ -1,6 +1,9 @@ <?php die(); define('WP_INSTALLING', true); +//These two defines are required to allow us to use require_wp_db() to load the database class while being wp-content/wp-db.php aware +define('ABSPATH', dirname(dirname(__FILE__)).'/'); +define('WPINC', 'wp-includes'); require_once('../wp-includes/compat.php'); require_once('../wp-includes/functions.php'); @@ -161,7 +164,7 @@ switch($step) { define('DB_HOST', $dbhost); // We'll fail here if the values are no good. - require_once('../wp-includes/wp-db.php'); + require_wp_db(); $handle = fopen('../wp-config.php', 'w'); foreach ($configFile as $line_num => $line) { diff --git a/wp-admin/users.php b/wp-admin/users.php index 83c6cb5..c4a5917 100644 --- a/wp-admin/users.php +++ b/wp-admin/users.php @@ -523,7 +523,7 @@ foreach($roleclasses as $role => $roleclass) { <th colspan="2" style="text-align: center"><?php _e('Actions') ?></th> </tr> </tbody> -<tbody id="role-<?php echo $role; ?>"><?php +<tbody id="role-<?php echo $role; ?>" class="list:user user-list"><?php $style = ''; foreach ( (array) $roleclass as $user_object ) { $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"'; diff --git a/wp-admin/wp-admin.css b/wp-admin/wp-admin.css index 2b06951..3897e79 100644 --- a/wp-admin/wp-admin.css +++ b/wp-admin/wp-admin.css @@ -819,6 +819,10 @@ input.delete:hover { width: 95%; } +#postcustom table #addmetasub { + width: auto; +} + #poststuff { margin-right: 16em; } |