Ticket #6815: 6815.2.diff
File 6815.2.diff, 28.7 KB (added by , 16 years ago) |
---|
-
wp-includes/script-loader.php
241 241 )); 242 242 243 243 $scripts->add( 'theme-preview', '/wp-admin/js/theme-preview.js', array( 'thickbox', 'jquery' ), '20080625' ); 244 245 $scripts->add( 'inline-edit', '/wp-admin/js/inline-edit.js', array( 'jquery', 'jquery-form', 'suggest' ), '20080812' ); 244 246 245 247 $scripts->add( 'plugin-install', '/wp-admin/js/plugin-install.js', array( 'thickbox', 'jquery' ), '20080803' ); 246 248 $scripts->localize( 'plugin-install', 'plugininstallL10n', array( -
wp-admin/admin-ajax.php
12 12 * @since unknown 13 13 */ 14 14 define('DOING_AJAX', true); 15 define('WP_ADMIN', true); 15 16 16 17 require_once('../wp-load.php'); 17 18 require_once('includes/admin.php'); … … 715 716 $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : ''; 716 717 die(get_sample_permalink_html($post_id, $title, $slug)); 717 718 break; 719 case 'inline-data': 720 get_inline_data( explode(',', $_POST['posts']) ); 721 die(); 722 break; 723 case 'inline-save': 724 inline_save_row( $_POST ); 725 if( 'page' == $_POST['post_type'] ) { 726 $post = query_posts( 'page_id=' . $_POST['post_ID'] ); 727 page_rows( $post ); 728 } 729 if( 'post' == $_POST['post_type'] ) { 730 $mode = $_POST['post_view']; 731 $post = query_posts( 'p=' . $_POST['post_ID'] ); 732 post_rows(); 733 } 734 die(); 735 break; 718 736 case 'meta-box-order': 719 737 check_ajax_referer( 'meta-box-order' ); 720 738 update_user_option( $GLOBALS['current_user']->ID, "meta-box-order_$_POST[page]", $_POST['order'] ); -
wp-admin/wp-admin.css
2139 2139 .metabox-prefs label input { 2140 2140 margin: 0 5px 0 2px; 2141 2141 } 2142 2143 2144 /* Inline Editor */ 2145 2146 .inline { 2147 font-size: 10px; 2148 } 2149 2150 .inline td { 2151 padding-right: 4px; 2152 padding-left: 7px; 2153 } 2154 2155 .inline input, .inline select, .inline textarea { 2156 font-size: 10px !important; 2157 padding: 2px; 2158 border: 1px solid #ddd; 2159 } 2160 2161 .inline td.date { 2162 width: 87px; 2163 } 2164 2165 .inline td.page-title { 2166 width: 495px; 2167 } 2168 2169 .inline td.post-title input.title { 2170 width: 250px; 2171 } 2172 2173 .inline td.post-title input.slug { 2174 width: 222px; 2175 float: right; 2176 } 2177 2178 .inline div.title { 2179 float: left; 2180 } 2181 2182 .inline div.title input.title { 2183 font-size: 12px !important; 2184 } 2185 2186 .inline div.title label { 2187 float: left; 2188 margin-top: 4px; 2189 } 2190 2191 .inline td.page-title input.slug { 2192 width: 123px; 2193 float: right; 2194 } 2195 2196 .inline div.other, .inline div.more { 2197 width: 190px; 2198 float: left; 2199 padding-left: 5px; 2200 } 2201 2202 .inline div.other label, .inline div.more label { 2203 display: block; float: left; 2204 width: 54px; 2205 margin-top: 4px; 2206 } 2207 2208 .inline div.other select { 2209 width: 133px; 2210 } 2211 2212 .inline div.more { 2213 width: 125px; 2214 } 2215 2216 .inline div.more input { 2217 width: 60px; 2218 } 2219 2220 .inline td.author select { 2221 width: 110px; 2222 } 2223 2224 .inline ul.categories { 2225 list-style: none; 2226 padding: 0; margin: 0; 2227 height: 65px; 2228 overflow: auto; 2229 font-size: 10px; 2230 } 2231 2232 .inline ul.categories ul.children { 2233 list-style: none; 2234 padding-left: 15px; 2235 } 2236 2237 .inline ul.categories li { 2238 margin-bottom: 2px; 2239 } 2240 2241 .inline ul.categories input { 2242 vertical-align: middle; 2243 padding: 0; border: 0; 2244 } 2245 2246 .inline td.tags textarea { 2247 height: 58px; width: 100%; 2248 } 2249 2250 .inline td.comments { 2251 padding-left: 0; 2252 } 2253 2254 .inline td.status select { 2255 width: 98px; 2256 } 2257 2258 .inline td.status input { 2259 vertical-align: middle; 2260 } 2261 No newline at end of file -
wp-admin/includes/taxonomy.php
133 133 134 134 foreach ( $tags as $tag ) 135 135 $tag_names[] = $tag->name; 136 $tags_to_edit = join( ', ', $tag_names );136 $tags_to_edit = join( ', ', $tag_names ); 137 137 $tags_to_edit = attribute_escape( $tags_to_edit ); 138 138 $tags_to_edit = apply_filters( 'tags_to_edit', $tags_to_edit ); 139 139 return $tags_to_edit; -
wp-admin/includes/template.php
350 350 $posts_columns['modified'] = __('Submitted'); 351 351 else 352 352 $posts_columns['date'] = __('Date'); 353 //$posts_columns['author'] = __('Author');353 $posts_columns['author'] = __('Author'); 354 354 $posts_columns['categories'] = __('Categories'); 355 355 $posts_columns['tags'] = __('Tags'); 356 356 if ( !isset($_GET['post_status']) || !in_array($_GET['post_status'], array('pending', 'draft', 'future')) ) … … 406 406 return $posts_columns; 407 407 } 408 408 409 function inline_edit_row( $type ) { 410 global $current_user; 411 412 if ( 'post' == $type ) 413 $post = get_default_post_to_edit(); 414 else 415 $post = get_default_page_to_edit(); 416 417 echo '<tr id="inline-edit" style="display: none">'; 418 $columns = $type == 'post' ? wp_manage_posts_columns() : wp_manage_pages_columns(); 419 foreach($columns as $column_name=>$column_display_name) { 420 421 switch($column_name) { 422 423 case 'cb': ?> 424 <th class="check-column"></th> 425 <?php 426 break; 427 428 case 'modified': 429 case 'date': ?> 430 <td class="date"> 431 <?php touch_time(1, 1, 4, 1); ?> 432 </td> 433 <?php 434 break; 435 436 case 'title': ?> 437 <td class="<?php echo $type ?>-title"> 438 <div class="title"> 439 <input type="text" name="post_title" class="title" value="" /><br /> 440 <label><?php _e('Slug'); ?></label><input type="text" name="post_name" value="" class="slug" /> 441 </div> 442 <?php if($type == 'page'): ?> 443 <div class="other"> 444 <label><?php _e('Parent'); ?></label> 445 <select name="post_parent"> 446 <option value="0"><?php _e('Main Page (no parent)'); ?></option> 447 <?php parent_dropdown(); ?> 448 </select><br /> 449 <label><?php _e('Template'); ?></label> 450 <select name="page_template"> 451 <option value='default'><?php _e('Default Template'); ?></option> 452 <?php page_template_dropdown() ?> 453 </select> 454 </div> 455 <div class="more"> 456 <label><?php _e('Order'); ?></label><input type="text" name="menu_order" value="<?php echo $post->menu_order ?>" /> 457 <label><?php _e('Password'); ?></label><input type="text" name="post_password" value="<?php echo $post->post_password ?>" /> 458 </div> 459 <?php endif; ?> 460 <div class="clear"></div> 461 <?php 462 $actions = array(); 463 $actions['save'] = '<a href="#">' . __('Save') . '</a>'; 464 $actions['cancel'] = '<a href="#">' . __('Cancel') . '</a>'; 465 $action_count = count($actions); 466 $i = 0; 467 foreach ( $actions as $action => $link ) { 468 ++$i; 469 ( $i == $action_count ) ? $sep = '' : $sep = ' | '; 470 echo "<span class='$action'>$link$sep</span>"; 471 } 472 ?> 473 </td> 474 <?php 475 break; 476 477 case 'categories': ?> 478 <td class="categories"> 479 <ul class="categories"> 480 <?php wp_category_checklist() ?> 481 </ul> 482 </td> 483 <?php 484 break; 485 486 case 'tags': ?> 487 <td class="tags"> 488 <textarea name="tags_input"></textarea> 489 </td> 490 <?php 491 break; 492 493 case 'comments': ?> 494 <td class="comments num"> 495 <input title="Allow Comments" type="checkbox" name="comment_status" value="open" /><br /> 496 <input title="Allow Pings" type="checkbox" name="ping_status" value="open" /> 497 </td> 498 <?php 499 break; 500 501 case 'author': ?> 502 <td class="author"> 503 <?php 504 $authors = get_editable_user_ids( $current_user->id ); // TODO: ROLE SYSTEM 505 if ( $authors && count( $authors ) > 1 ) { 506 wp_dropdown_users( array('include' => $authors, 'name' => 'post_author', 'class'=> 'author', 'selected' => $post->post_author) ); 507 } else { 508 echo $current_user->user_nicename.'<input type="hidden" value="'.$post->post_author.'" class="author" />'; 509 } 510 ?> 511 </td> 512 <?php 513 break; 514 515 case 'status': ?> 516 <td class="status"> 517 <select name="post_status"> 518 <?php if ( current_user_can('publish_posts') ) : // Contributors only get "Unpublished" and "Pending Review" ?> 519 <option value='publish'><?php _e('Published') ?></option> 520 <option value='future'><?php _e('Scheduled') ?></option> 521 <?php endif; ?> 522 <option value='pending'><?php _e('Pending Review') ?></option> 523 <option value='draft'><?php _e('Unpublished') ?></option> 524 </select> 525 <?php if($type == 'page'): ?> 526 <br /><label><input type="checkbox" name="page_private" value="private" <?php checked($post->post_status, 'private'); ?> /> <?php _e('Private') ?></label></p> 527 <?php else: ?> 528 <?php if ( current_user_can( 'edit_others_posts' ) ) : ?> 529 <br /><label><input type="checkbox" name="sticky" value="sticky" /> <?php _e('Sticky') ?></label></p> 530 <?php endif; ?> 531 <?php endif; ?> 532 </td> 533 <?php 534 break; 535 536 case 'control_view': ?> 537 <td><a href="<?php the_permalink(); ?>" rel="permalink" class="view"><?php _e('View'); ?></a></td> 538 <?php 539 break; 540 541 case 'control_edit': ?> 542 <td><?php if ( current_user_can('edit_post',$post->ID) ) { echo "<a href='post.php?action=edit&post=$id' class='edit'>" . __('Edit') . "</a>"; } ?></td> 543 <?php 544 break; 545 546 case 'control_delete': ?> 547 <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'>" . __('Delete') . "</a>"; } ?></td> 548 <?php 549 break; 550 551 default: ?> 552 <td><?php do_action('manage_posts_custom_column', $column_name, $post->ID); ?></td> 553 <?php 554 break; 555 } 556 } 557 558 echo '</tr>'; 559 } 560 561 function inline_save_row( $data ) { 562 // get the original post content 563 $post = get_post( $data['post_ID'], ARRAY_A ); 564 $data['content'] = $post['post_content']; 565 566 // statuses 567 if( 'page' == $data['post_type'] && 'private' == $data['page_private'] ) 568 $data['post_status'] = 'private'; 569 if( empty($data['comment_status']) ) 570 $data['comment_status'] = 'closed'; 571 if( empty($data['ping_status']) ) 572 $data['ping_status'] = 'closed'; 573 574 // rename 575 $data['user_ID'] = $GLOBALS['user_ID']; 576 $data['excerpt'] = $data['post_excerpt']; 577 $data['trackback_url'] = $data['to_ping']; 578 $data['parent_id'] = $data['post_parent']; 579 580 // update the post 581 $_POST = $data; 582 edit_post(); 583 } 584 585 // outputs XML of the post/page data ready for use in the inline editor 586 // accepts array of post IDs 587 function get_inline_data($posts) { 588 global $post; 589 590 header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true); 591 echo "<?xml version='1.0' ?>\n"; 592 echo "<posts>\n"; 593 594 foreach($posts as $ID) { 595 $GLOBALS['post'] = get_post($ID); 596 $GLOBALS['post_ID'] = $ID; 597 598 if( ($post->post_type == 'post' && !current_user_can('edit_post', $ID)) || 599 ($post->post_type == 'page' && !current_user_can('edit_page', $ID)) || 600 ($post->post_type != 'post' && $post->post_type != 'page')) 601 continue; 602 603 echo " <post id='$ID'>\n"; 604 echo " <post_title>" . wp_specialchars($post->post_title, 1) . "</post_title>\n"; 605 echo " <post_name>$post->post_name</post_name>\n"; 606 echo " <post_author>$post->post_author</post_author>\n"; 607 echo " <comment_status>$post->comment_status</comment_status>\n"; 608 echo " <ping_status>$post->ping_status</ping_status>\n"; 609 echo " <post_status>$post->post_status</post_status>\n"; 610 echo " <jj>" . mysql2date( 'd', $post->post_date ) . "</jj>\n"; 611 echo " <mm>" . mysql2date( 'm', $post->post_date ) . "</mm>\n"; 612 echo " <aa>" . mysql2date( 'Y', $post->post_date ) . "</aa>\n"; 613 echo " <hh>" . mysql2date( 'H', $post->post_date ) . "</hh>\n"; 614 echo " <mn>" . mysql2date( 'i', $post->post_date ) . "</mn>\n"; 615 if( $post->post_type == 'post' ) { 616 echo ' <tags_input>' . wp_specialchars(get_tags_to_edit( $post->ID ), 1) . "</tags_input>\n"; 617 echo ' <post_category>' . implode( ',', wp_get_post_categories( $post->ID ) ) . "</post_category>\n"; 618 echo ' <sticky>' . (is_sticky($post->ID) ? 'sticky' : '') . "</sticky>\n"; 619 } 620 if( $post->post_type == 'page' ) { 621 echo " <post_parent>$post->post_parent</post_parent>\n"; 622 echo ' <page_template>' . wp_specialchars(get_post_meta( $post->ID, '_wp_page_template', true ), 1) . "</page_template>\n"; 623 echo " <post_password>" . wp_specialchars($post->post_password, 1) . "</post_password>\n"; 624 echo " <menu_order>$post->menu_order</menu_order>\n"; 625 } 626 echo " </post>\n"; 627 } 628 629 echo '</posts>'; 630 } 631 409 632 function post_rows() { 410 633 global $wp_query, $post, $mode; 411 634 … … 483 706 } 484 707 485 708 if ( 'excerpt' == $mode ) { ?> 486 <td ><?php echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode) ?></td>709 <td class="date"><?php echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode) ?></td> 487 710 <?php } else { ?> 488 <td ><abbr title="<?php echo $t_time ?>"><?php echo apply_filters('post_date_column_time', $h_time, $post, $column_name, $mode) ?></abbr></td>711 <td class="date"><abbr title="<?php echo $t_time ?>"><?php echo apply_filters('post_date_column_time', $h_time, $post, $column_name, $mode) ?></abbr></td> 489 712 <?php } 490 713 break; 491 714 … … 500 723 501 724 $actions = array(); 502 725 $actions['edit'] = '<a href="post.php?action=edit&post=' . $post->ID . '">' . __('Edit') . '</a>'; 726 $actions['inline'] = '<a href="#" class="editinline">' . __('Quick Edit') . '</a>'; 503 727 $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("post.php?action=delete&post=$post->ID", 'delete-post_' . $post->ID) . "' onclick=\"if ( confirm('" . js_escape(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n 'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this post '%s'\n 'Cancel' to stop, 'OK' to delete."), $post->post_title )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>"; 504 728 $action_count = count($actions); 505 729 $i = 0; … … 515 739 516 740 case 'categories': 517 741 ?> 518 <td ><?php742 <td class="categories"><?php 519 743 $categories = get_the_category(); 520 744 if ( !empty( $categories ) ) { 521 745 $out = array(); … … 531 755 532 756 case 'tags': 533 757 ?> 534 <td ><?php758 <td class="tags"><?php 535 759 $tags = get_the_tags(); 536 760 if ( !empty( $tags ) ) { 537 761 $out = array(); … … 547 771 548 772 case 'comments': 549 773 ?> 550 <td class=" num"><div class="post-com-count-wrapper">774 <td class="comments num"><div class="post-com-count-wrapper"> 551 775 <?php 552 776 $pending_phrase = sprintf( __('%s pending'), number_format( $pending_comments ) ); 553 777 if ( $pending_comments ) … … 562 786 563 787 case 'author': 564 788 ?> 565 <td ><a href="edit.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td>789 <td class="author"><a href="edit.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td> 566 790 <?php 567 791 break; 568 792 569 793 case 'status': 570 794 ?> 571 <td >795 <td class="status"> 572 796 <a href="<?php the_permalink(); ?>" title="<?php echo attribute_escape(sprintf(__('View "%s"'), $title)); ?>" rel="permalink"> 573 797 <?php 574 798 switch ( $post->post_status ) { … … 654 878 655 879 case 'cb': 656 880 ?> 657 <th scope="row" class="check-column"><input type="checkbox" name=" delete[]" value="<?php the_ID(); ?>" /></th>881 <th scope="row" class="check-column"><input type="checkbox" name="post[]" value="<?php the_ID(); ?>" /></th> 658 882 <?php 659 883 break; 660 884 case 'modified': … … 681 905 } 682 906 } 683 907 ?> 684 <td ><abbr title="<?php echo $t_time ?>"><?php echo $h_time ?></abbr></td>908 <td class="date"><abbr title="<?php echo $t_time ?>"><?php echo $h_time ?></abbr></td> 685 909 <?php 686 910 break; 687 911 case 'title': … … 696 920 697 921 $actions = array(); 698 922 $actions['edit'] = '<a href="' . $edit_link . '">' . __('Edit') . '</a>'; 923 $actions['inline'] = '<a href="#" class="editinline">' . __('Quick Edit') . '</a>'; 699 924 $actions['delete'] = "<a class='submitdelete' href='" . wp_nonce_url("page.php?action=delete&post=$page->ID", 'delete-page_' . $page->ID) . "' onclick=\"if ( confirm('" . js_escape(sprintf( ('draft' == $page->post_status) ? __("You are about to delete this draft '%s'\n 'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this page '%s'\n 'Cancel' to stop, 'OK' to delete."), $page->post_title )) . "') ) { return true;}return false;\">" . __('Delete') . "</a>"; 700 925 $action_count = count($actions); 701 926 $i = 0; … … 711 936 712 937 case 'comments': 713 938 ?> 714 <td class=" num"><div class="post-com-count-wrapper">939 <td class="comments num"><div class="post-com-count-wrapper"> 715 940 <?php 716 941 $left = get_pending_comments_num( $page->ID ); 717 942 $pending_phrase = sprintf( __('%s pending'), number_format( $left ) ); … … 727 952 728 953 case 'author': 729 954 ?> 730 <td ><a href="edit-pages.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td>955 <td class="author"><a href="edit-pages.php?author=<?php the_author_ID(); ?>"><?php the_author() ?></a></td> 731 956 <?php 732 957 break; 733 958 734 959 case 'status': 735 960 ?> 736 <td >961 <td class="status"> 737 962 <a href="<?php the_permalink(); ?>" title="<?php echo attribute_escape(sprintf(__('View "%s"'), $title)); ?>" rel="permalink"> 738 963 <?php 739 964 switch ( $page->post_status ) { … … 1240 1465 1241 1466 } 1242 1467 1243 function touch_time( $edit = 1, $for_post = 1, $tab_index = 0 ) {1468 function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) { 1244 1469 global $wp_locale, $post, $comment; 1245 1470 1246 1471 if ( $for_post ) … … 1261 1486 $mn = ($edit) ? mysql2date( 'i', $post_date ) : gmdate( 'i', $time_adj ); 1262 1487 $ss = ($edit) ? mysql2date( 's', $post_date ) : gmdate( 's', $time_adj ); 1263 1488 1264 $month = "<select id=\"mm\"name=\"mm\"$tab_index_attribute>\n";1489 $month = "<select " . ( $multi ? '' : 'id="mm" ' ) . "name=\"mm\"$tab_index_attribute>\n"; 1265 1490 for ( $i = 1; $i < 13; $i = $i +1 ) { 1266 1491 $month .= "\t\t\t" . '<option value="' . zeroise($i, 2) . '"'; 1267 1492 if ( $i == $mm ) … … 1270 1495 } 1271 1496 $month .= '</select>'; 1272 1497 1273 $day = '<input type="text" id="jj"name="jj" value="' . $jj . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';1274 $year = '<input type="text" id="aa"name="aa" value="' . $aa . '" size="4" maxlength="5"' . $tab_index_attribute . ' autocomplete="off" />';1275 $hour = '<input type="text" id="hh"name="hh" value="' . $hh . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';1276 $minute = '<input type="text" id="mn"name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />';1498 $day = '<input type="text" ' . ( $multi ? '' : 'id="jj" ' ) . 'name="jj" value="' . $jj . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />'; 1499 $year = '<input type="text" ' . ( $multi ? '' : 'id="aa" ' ) . 'name="aa" value="' . $aa . '" size="4" maxlength="5"' . $tab_index_attribute . ' autocomplete="off" />'; 1500 $hour = '<input type="text" ' . ( $multi ? '' : 'id="hh" ' ) . 'name="hh" value="' . $hh . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />'; 1501 $minute = '<input type="text" ' . ( $multi ? '' : 'id="mn" ' ) . 'name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off" />'; 1277 1502 printf(_c('%1$s%2$s, %3$s @ %4$s : %5$s|1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input'), $month, $day, $year, $hour, $minute); 1503 1504 if ( $multi ) return; 1505 1278 1506 echo "\n\n"; 1279 1507 foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit ) 1280 1508 echo '<input type="hidden" id="hidden_' . $timeunit . '" name="hidden_' . $timeunit . '" value="' . $$timeunit . '" />' . "\n"; … … 1317 1545 else 1318 1546 $current = ''; 1319 1547 1320 echo "\n\t<option value='$item->ID'$current>$pad " . wp_specialchars($item->post_title) . "</option>";1548 echo "\n\t<option class='level-$level' value='$item->ID'$current>$pad " . wp_specialchars($item->post_title) . "</option>"; 1321 1549 parent_dropdown( $default, $item->ID, $level +1 ); 1322 1550 } 1323 1551 } else { -
wp-admin/js/forms.js
1 1 function checkAll(jQ) { // use attr( checked, fn ) 2 jQuery(jQ).find( 'tbody:visible :checkbox' ).attr( 'checked', function() {2 jQuery(jQ).find( 'tbody:visible .check-column :checkbox' ).attr( 'checked', function() { 3 3 return jQuery(this).attr( 'checked' ) ? '' : 'checked'; 4 4 } ); 5 5 } 6 6 7 7 jQuery( function($) { 8 8 var lastClicked = false; 9 $( 'tbody :checkbox' ).click( function(e) {9 $( 'tbody .check-column :checkbox' ).click( function(e) { 10 10 if ( 'undefined' == e.shiftKey ) { return true; } 11 11 if ( e.shiftKey ) { 12 12 if ( !lastClicked ) { return true; } -
wp-admin/js/inline-edit.js
1 var postType = null; 2 var postView = null; 3 var postsXml = null; 4 var inlineRows = null; 5 6 jQuery(document).ready(function() { 7 postType = window.location.href.indexOf('edit.php') == -1 ? 'page' : 'post'; 8 postView = window.location.href.indexOf('mode=excerpt') == -1 ? 'list' : 'excerpt'; 9 10 // get IDs of all editable rows 11 inlineRows = jQuery('table.widefat .check-column :checkbox[name="post[]"]').parents('tr'); 12 13 // prepare the edit row 14 var blankRow = jQuery('#inline-edit'); 15 jQuery('ul.categories *', blankRow).removeAttr('id'); 16 jQuery('ul.categories label', blankRow).removeAttr('for'); 17 blankRow.attr('title', 'Double-click to cancel') 18 .dblclick(function() { toggleRow(this); }) 19 .keypress(function(event) { if(event.which == 13) return saveRow(this); }); 20 jQuery('span.cancel a', blankRow).click(function() { return revertRow(this); }); 21 jQuery('span.save a', blankRow).click(function() { return saveRow(this); }); 22 23 // add events and get data 24 inlineRows.dblclick(function() { toggleRow(this); }); 25 addEvents(inlineRows); 26 27 // get data 28 getInlineData('all'); 29 }); 30 31 function toggleRow(el) { 32 jQuery('#'+postType+'-'+getRowId(el)).css('display') == 'none' ? revertRow(el) : editRow(el); 33 } 34 35 // add events to links and make rows double-clickable 36 function addEvents(rows) { 37 rows.each(function() { 38 var row = jQuery(this); 39 jQuery('a.editinline', row).click(function() { editRow(this); return false; }); 40 row.attr('title', 'Double-click to edit'); 41 }); 42 } 43 44 function getInlineData(id) { 45 if(id == 'all') { 46 var editable = []; 47 inlineRows.each(function(i) { editable[i] = getRowId(this); }); 48 id = editable.join(','); 49 } 50 51 if(id == '') 52 return false; 53 54 jQuery.post('admin-ajax.php', 55 { 56 action: 'inline-data', 57 posts: id 58 }, 59 function(xml) { 60 if(id.indexOf(',') == -1) { 61 var newData = jQuery(xml).find('post[id="'+id+'"]'); 62 jQuery(postsXml).find('post[id="'+id+'"]').replaceWith(newData); 63 } else { 64 postsXml = xml; 65 } 66 }, 'xml' 67 ); 68 } 69 70 function editRow(id) { 71 if(typeof(id) == 'object') 72 id = getRowId(id); 73 74 var blankRow = jQuery('#inline-edit'); 75 76 var fields = ['post_title', 'post_name', 'post_author', 'post_status', 'jj', 'mm', 'aa', 'hh', 'mn']; 77 if(postType == 'page') fields.push('post_parent', 'menu_order', 'page_template', 'post_password'); 78 if(postType == 'post') fields.push('tags_input'); 79 80 // add the new blank row 81 var editRow = blankRow.clone(true); 82 jQuery(editRow).attr('id', 'edit-'+id).addClass('inline').show(); 83 if(jQuery('#'+postType+'-'+id).hasClass('alternate')) 84 jQuery(editRow).addClass('alternate'); 85 jQuery('#'+postType+'-'+id).hide().after(editRow); 86 87 // populate the data 88 var rowData = jQuery(postsXml).find('post[id="'+id+'"]'); 89 for(var f = 0; f < fields.length; f++) { 90 jQuery(':input[name="'+fields[f]+'"]', editRow).val(jQuery(fields[f], rowData).text()); 91 } 92 93 // ping, comments, and privacy 94 if(jQuery('comment_status', rowData).text() == 'open') 95 jQuery('input[name="comment_status"]', editRow).select(); 96 if(jQuery('ping_status', rowData).text() == 'open') 97 jQuery('input[name="ping_status"]', editRow).select(); 98 if(jQuery('sticky', rowData).text() == 'sticky') 99 jQuery('input[name="sticky"]', editRow).select(); 100 101 // categories 102 var categories = jQuery('post_category', rowData).text().split(','); 103 jQuery(categories).each(function() { 104 jQuery('ul.categories :checkbox[value="'+this+'"]', editRow).select(); 105 }); 106 107 // handle the post status 108 var status = jQuery('post_status', rowData).text(); 109 if(status != 'future') jQuery('select[name="post_status"] option[value="future"]', editRow).remove(); 110 if(status == 'private') jQuery('input[name="page_private"]', editRow).select(); 111 112 // enable autocomplete for tags 113 if(postType == 'post') { 114 jQuery('tr.inline textarea[name="tags_input"]').suggest( 'admin-ajax.php?action=ajax-tag-search', { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } ); 115 } 116 117 // remove the current page and children from the parent dropdown 118 var pageOpt = jQuery('select[name="post_parent"] option[value="'+id+'"]', editRow); 119 if(pageOpt.length > 0) { 120 var pageLevel = pageOpt[0].className.split('-')[1]; 121 var nextPage = pageOpt; var pageLoop = true; 122 while(pageLoop) { 123 var nextPage = nextPage.next('option'); 124 var nextLevel = nextPage[0].className.split('-')[1]; 125 if(nextLevel <= pageLevel) 126 pageLoop = false; 127 else { 128 nextPage.remove(); 129 nextPage = pageOpt; 130 } 131 } 132 pageOpt.remove(); 133 } 134 135 return false; 136 } 137 138 function saveRow(id) { 139 if(typeof(id) == 'object') 140 id = getRowId(id); 141 142 jQuery('#edit-'+id+' .check-column').html('<img src="images/loading.gif" alt="Saving..." />'); 143 144 var params = { 145 action: 'inline-save', 146 post_type: postType, 147 post_ID: id, 148 edit_date: 'true', 149 post_view: postView 150 }; 151 152 var fields = jQuery('#edit-'+id+' :input').fieldSerialize(); 153 params = fields + '&' + jQuery.param(params); 154 155 // make ajax request 156 jQuery.post('admin-ajax.php', params, 157 function(html) { 158 var row = jQuery('#'+postType+'-'+id); 159 jQuery('#edit-'+id).hide(); 160 html = jQuery(html).html(); 161 row.html(html).show(); 162 row.animate( { backgroundColor: '#FFFBCC' }, 200) 163 .animate( { backgroundColor: row.css('background-color') }, 500); 164 getInlineData(id); 165 addEvents(row); 166 } 167 ); 168 169 return false; 170 } 171 172 function revertRow(id) { 173 if(typeof(id) == 'object') 174 id = getRowId(id); 175 176 jQuery('#edit-'+id).remove(); 177 jQuery('#'+postType+'-'+id).show(); 178 179 return false; 180 } 181 182 function getRowId(obj) { 183 var id = obj.tagName == 'TR' ? obj.id : jQuery(obj).parents('tr').attr('id'); 184 var parts = id.split('-'); 185 return parts[parts.length - 1]; 186 } 187 No newline at end of file -
wp-admin/edit-post-rows.php
27 27 </tr> 28 28 </thead> 29 29 <tbody> 30 31 <?php inline_edit_row( 'post' ) ?> 32 30 33 <?php 31 34 if ( have_posts() ) { 32 35 post_rows(); -
wp-admin/edit.php
50 50 $title = __('Posts'); 51 51 $parent_file = 'edit.php'; 52 52 wp_enqueue_script('admin-forms'); 53 wp_enqueue_script('inline-edit'); 53 54 55 54 56 list($post_stati, $avail_post_stati) = wp_edit_posts_query(); 55 57 56 58 if ( 1 == count($posts) && is_singular() ) { … … 169 171 <div class="alignleft"> 170 172 <select name="action"> 171 173 <option value="" selected><?php _e('Actions'); ?></option> 174 <option value="edit"><?php _e('Edit'); ?></option> 172 175 <option value="delete"><?php _e('Delete'); ?></option> 173 <option value="edit"><?php _e('Edit'); ?></option>174 176 </select> 175 177 <input type="submit" value="<?php _e('Apply'); ?>" name="doaction" class="button-secondary action" /> 176 178 <?php wp_nonce_field('bulk-posts'); ?> -
wp-admin/edit-pages.php
44 44 $title = __('Pages'); 45 45 $parent_file = 'edit.php'; 46 46 wp_enqueue_script('admin-forms'); 47 wp_enqueue_script('inline-edit'); 47 48 48 49 $post_stati = array( // array( adj, noun ) 49 50 'publish' => array(__('Published'), __('Published pages'), __ngettext_noop('Published (%s)', 'Published (%s)')), … … 153 154 <div class="alignleft"> 154 155 <select name="action"> 155 156 <option value="" selected><?php _e('Actions'); ?></option> 157 <option value="edit"><?php _e('Edit'); ?></option> 156 158 <option value="delete"><?php _e('Delete'); ?></option> 157 159 </select> 158 160 <input type="submit" value="<?php _e('Apply'); ?>" name="doaction" class="button-secondary action" /> … … 187 189 </tr> 188 190 </thead> 189 191 <tbody> 192 <?php inline_edit_row( 'page' ) ?> 190 193 <?php page_rows($posts, $pagenum, $per_page); ?> 191 194 </tbody> 192 195 </table>