Make WordPress Core

Ticket #23396: version-4.diff

File version-4.diff, 17.1 KB (added by adamsilverstein, 12 years ago)
  • wp-includes/post-template.php

     
    13011301                return false;
    13021302
    13031303        /* translators: revision date format, see http://php.net/date */
    1304         $datef = _x( 'j F, Y @ G:i', 'revision date format');
     1304        $datef = _x( 'D, M jS @ G:i a', 'revision date format' );
    13051305        /* translators: 1: date */
    13061306        $autosavef = __( '%1$s [Autosave]' );
    13071307        /* translators: 1: date */
    13081308        $currentf  = __( '%1$s [Current Revision]' );
    13091309
     1310        $author = get_the_author_meta( 'display_name', $revision->post_author );
     1311
    13101312        $date = date_i18n( $datef, strtotime( $revision->post_modified ) );
    13111313        if ( $link && current_user_can( 'edit_post', $revision->ID ) && $link = get_edit_post_link( $revision->ID ) )
    1312                 $date = "<a href='$link'>$date</a>";
     1314                $date = "<a href='$link'>$author : $date</a>";
    13131315
    13141316        if ( !wp_is_post_revision( $revision ) )
    13151317                $date = sprintf( $currentf, $date );
     
    13861388                        continue;
    13871389
    13881390                $date = wp_post_revision_title( $revision );
    1389                 $name = get_the_author_meta( 'display_name', $revision->post_author );
     1391                $datelinktodiff = sprintf( '<a href="revision.php?action=diff&post_type=post&left=%d&right=%d">%s</a>',
     1392                                                                        $revision->ID, $post->ID, wp_post_revision_title( $revision, false ) );
    13901393
     1394                $name = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.';
     1395                $avatar = get_avatar( $revision->post_author, 22 );
    13911396                if ( 'form-table' == $format ) {
    1392                         if ( $left )
    1393                                 $left_checked = $left == $revision->ID ? ' checked="checked"' : '';
    1394                         else
    1395                                 $left_checked = $right_checked ? ' checked="checked"' : ''; // [sic] (the next one)
    1396                         $right_checked = $right == $revision->ID ? ' checked="checked"' : '';
    13971397
    13981398                        $class = $class ? '' : " class='alternate'";
    13991399
    14001400                        if ( $post->ID != $revision->ID && $can_edit_post )
    1401                                 $actions = '<a href="' . wp_nonce_url( add_query_arg( array( 'revision' => $revision->ID, 'action' => 'restore' ) ), "restore-post_$post->ID|$revision->ID" ) . '">' . __( 'Restore' ) . '</a>';
     1401                                $actions = '';// '<a href="' . wp_nonce_url( add_query_arg( array( 'revision' => $revision->ID, 'action' => 'restore' ) ), "restore-post_$post->ID|$revision->ID" ) . '">' . __( 'Restore' ) . '</a>';
    14021402                        else
    14031403                                $actions = '';
    14041404
    14051405                        $rows .= "<tr$class>\n";
    1406                         $rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='left' value='$revision->ID'$left_checked /></th>\n";
    1407                         $rows .= "\t<th style='white-space: nowrap' scope='row'><input type='radio' name='right' value='$revision->ID'$right_checked /></th>\n";
    1408                         $rows .= "\t<td>$date</td>\n";
     1406                        $rows .= "\t<th style='white-space: nowrap' scope='row'><input type='checkbox' name='revisionstocompare[]' value='$revision->ID' /></th>\n";
     1407                        $rows .= "\t<td>$avatar $date</td>\n";
    14091408                        $rows .= "\t<td>$name</td>\n";
    1410                         $rows .= "\t<td class='action-links'>$actions</td>\n";
    14111409                        $rows .= "</tr>\n";
    14121410                } else {
    1413                         $title = sprintf( $titlef, $date, $name );
     1411                        $title = sprintf( $titlef, $datelinktodiff, $name );
    14141412                        $rows .= "\t<li>$title</li>\n";
    14151413                }
    14161414        }
    14171415
    14181416        if ( 'form-table' == $format ) : ?>
    1419 
    1420 <form action="revision.php" method="get">
    1421 
     1417<form action="revision.php" method="get" id='revision-list-form'>
     1418<hr />
    14221419<div class="tablenav">
    1423         <div class="alignleft">
    1424                 <input type="submit" class="button-secondary" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
     1420        <div class='revision-post-list-title'><?php _e( 'Pick two revisions to compare' ) ?></div>
     1421        <div class="alignright">
     1422                <input type="submit" class="button-secondary compare-revisions no-js" value="<?php esc_attr_e( 'Compare Revisions' ); ?>" />
    14251423                <input type="hidden" name="action" value="diff" />
    14261424                <input type="hidden" name="post_type" value="<?php echo esc_attr($post->post_type); ?>" />
    14271425        </div>
    14281426</div>
    14291427
    1430 <br class="clear" />
    1431 
    14321428<table class="widefat post-revisions" cellspacing="0" id="post-revisions">
    14331429        <col />
    1434         <col />
    1435         <col style="width: 33%" />
    1436         <col style="width: 33%" />
    1437         <col style="width: 33%" />
    1438 <thead>
    1439 <tr>
    1440         <th scope="col"><?php /* translators: column name in revisions */ _ex( 'Old', 'revisions column name' ); ?></th>
    1441         <th scope="col"><?php /* translators: column name in revisions */ _ex( 'New', 'revisions column name' ); ?></th>
    1442         <th scope="col"><?php /* translators: column name in revisions */ _ex( 'Date Created', 'revisions column name' ); ?></th>
    1443         <th scope="col"><?php _e( 'Author' ); ?></th>
    1444         <th scope="col" class="action-links"><?php _e( 'Actions' ); ?></th>
    1445 </tr>
    1446 </thead>
     1430        <col style="width: 40%" />
     1431        <col style="width: 59%" />
    14471432<tbody>
    14481433
    14491434<?php echo $rows; ?>
  • wp-includes/js/wp-list-revisions.js

     
    66                        var i, checkCount = 0, side;
    77                        for ( i = 0; i < inputs.length; i++ ) {
    88                                checkCount += inputs[i].checked ? 1 : 0;
    9                                 side = inputs[i].getAttribute('name');
    10                                 if ( ! inputs[i].checked &&
    11                                 ( 'left' == side && 1 > checkCount || 'right' == side && 1 < checkCount && ( ! inputs[i-1] || ! inputs[i-1].checked ) ) &&
    12                                 ! ( inputs[i+1] && inputs[i+1].checked && 'right' == inputs[i+1].getAttribute('name') ) )
    13                                         inputs[i].style.visibility = 'hidden';
    14                                 else if ( 'left' == side || 'right' == side )
    15                                         inputs[i].style.visibility = 'visible';
    169                        }
     10
     11                        if ( 2 == checkCount ) {
     12                                document.getElementById('revision-list-form').submit();
     13                        }
     14
    1715                }
    1816                pr.onclick();
    1917        }
  • wp-includes/wp-diff.php

     
    9898         * @return string
    9999         */
    100100        function addedLine( $line ) {
    101                 return "<td>+</td><td class='diff-addedline'>{$line}</td>";
     101                return "<td class='diff-addedline-indicator'>+</td><td class='diff-addedline'>{$line}</td>";
    102102        }
    103103
    104104        /**
     
    108108         * @return string
    109109         */
    110110        function deletedLine( $line ) {
    111                 return "<td>-</td><td class='diff-deletedline'>{$line}</td>";
     111                return "<td class='diff-deletedline-indicator'>-</td><td class='diff-deletedline'>{$line}</td>";
    112112        }
    113113
    114114        /**
     
    118118         * @return string
    119119         */
    120120        function contextLine( $line ) {
    121                 return "<td> </td><td class='diff-context'>{$line}</td>";
     121                return "<td class='context-indicator'></td><td class='diff-context'>{$line}</td>";
    122122        }
    123123
    124124        /**
     
    142142                $r = '';
    143143                foreach ($lines as $line) {
    144144                        if ( $encode )
    145                                 $line = htmlspecialchars( $line );
     145                                $line = wp_kses_post( $line );
    146146                        $r .= '<tr>' . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n";
    147147                }
    148148                return $r;
     
    160160                $r = '';
    161161                foreach ($lines as $line) {
    162162                        if ( $encode )
    163                                 $line = htmlspecialchars( $line );
     163                                $line = ( $line );
    164164                        $r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . "</tr>\n";
    165165                }
    166166                return $r;
     
    178178                $r = '';
    179179                foreach ($lines as $line) {
    180180                        if ( $encode )
    181                                 $line = htmlspecialchars( $line );
     181                                $line = wp_kses_post( $line );
    182182                        $r .= '<tr>' .
    183183                                $this->contextLine( $line ) . $this->contextLine( $line ) . "</tr>\n";
    184184                }
     
    248248                        if ( isset( $orig_diffs[$orig_rows[$row]] ) )
    249249                                $orig_line = $orig_diffs[$orig_rows[$row]];
    250250                        elseif ( isset( $orig[$orig_rows[$row]] ) )
    251                                 $orig_line = htmlspecialchars($orig[$orig_rows[$row]]);
     251                                $orig_line = wp_kses_post($orig[$orig_rows[$row]]);
    252252                        else
    253253                                $orig_line = '';
    254254
    255255                        if ( isset( $final_diffs[$final_rows[$row]] ) )
    256256                                $final_line = $final_diffs[$final_rows[$row]];
    257257                        elseif ( isset( $final[$final_rows[$row]] ) )
    258                                 $final_line = htmlspecialchars($final[$final_rows[$row]]);
     258                                $final_line = wp_kses_post($final[$final_rows[$row]]);
    259259                        else
    260260                                $final_line = '';
    261261
  • wp-includes/pluggable.php

     
    17431743        return $r;
    17441744}
    17451745endif;
     1746function wp_text_diff_with_count( $left_string, $right_string, $args = null ) {
     1747        $defaults = array( 'title' => '', 'title_left' => '', 'title_right' => '' );
     1748        $args = wp_parse_args( $args, $defaults );
     1749
     1750        if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
     1751                require( ABSPATH . WPINC . '/wp-diff.php' );
     1752
     1753        $left_string  = normalize_whitespace( $left_string );
     1754        $right_string = normalize_whitespace( $right_string );
     1755
     1756        $left_lines  = explode( "\n", $left_string );
     1757        $right_lines = explode( "\n", $right_string) ;
     1758
     1759        $text_diff = new Text_Diff($left_lines, $right_lines  );
     1760        $linesadded = $text_diff->countAddedLines();
     1761        $linesdeleted = $text_diff->countDeletedLines();
     1762
     1763        $renderer  = new WP_Text_Diff_Renderer_Table();
     1764        $diff = $renderer->render( $text_diff );
     1765
     1766        if ( !$diff )
     1767                return '';
     1768
     1769        $r  = "<table class='diff'>\n";
     1770        $r .= "<col class='ltype' /><col class='content' /><col class='ltype' /><col class='content' />";
     1771
     1772        if ( $args['title'] || $args['title_left'] || $args['title_right'] )
     1773                $r .= "<thead>";
     1774        if ( $args['title'] )
     1775                $r .= "<tr class='diff-title'><th colspan='4'>$args[title]</th></tr>\n";
     1776        if ( $args['title_left'] || $args['title_right'] ) {
     1777                $r .= "<tr class='diff-sub-title'>\n";
     1778                $r .= "\t<td id=\"left\"></td><th>$args[title_left]</th>\n";
     1779                $r .= "\t<td id=\"right\"></td><th>$args[title_right]</th>\n";
     1780                $r .= "</tr>\n";
     1781        }
     1782        if ( $args['title'] || $args['title_left'] || $args['title_right'] )
     1783                $r .= "</thead>\n";
     1784
     1785        $r .= "<tbody>\n$diff\n</tbody>\n";
     1786        $r .= "</table>";
     1787
     1788        return array( 'html' => $r, 'linesadded' => $linesadded, 'linesdeleted' => $linesdeleted );
     1789}
     1790 No newline at end of file
  • wp-admin/revision.php

     
    1111
    1212wp_enqueue_script('list-revisions');
    1313
    14 wp_reset_vars(array('revision', 'left', 'right', 'action'));
     14wp_reset_vars( array( 'revision', 'left', 'right', 'action' ) );
    1515
    1616$revision_id = absint($revision);
    1717$left        = absint($left);
     
    1919
    2020$redirect = 'edit.php';
    2121
     22if ( isset( $_GET['revisionstocompare'] ) ) {
     23        $revisionstocompare = $_GET['revisionstocompare'];
     24        $left        = absint( $revisionstocompare[1] );
     25        $right       = absint( $revisionstocompare[0] );
     26}
     27
     28
    2229switch ( $action ) :
    2330case 'restore' :
    2431        if ( !$revision = wp_get_post_revision( $revision_id ) )
     
    93100                break;
    94101
    95102        $post_title = '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>';
    96         $h2 = sprintf( __( 'Compare Revisions of &#8220;%1$s&#8221;' ), $post_title );
     103        $h2 = sprintf( __( 'Comparing revisions of %1$s' ), $post_title );
    97104        $title = __( 'Revisions' );
    98105
    99106        $left  = $left_revision->ID;
     
    135142        $redirect = 'edit.php';
    136143
    137144if ( !empty($redirect) ) {
     145        $redirect = remove_query_arg( 'revisionstocompare', $redirect );
    138146        wp_redirect( $redirect );
    139147        exit;
    140148}
     
    146154        $parent_file = $submenu_file = 'edit.php';
    147155
    148156require_once( './admin-header.php' );
    149 
    150157?>
    151158
    152159<div class="wrap">
    153 
    154160<h2 class="long-header"><?php echo $h2; ?></h2>
    155 
     161<hr />
    156162<table class="form-table ie-fixed">
    157         <col class="th" />
    158163<?php if ( 'diff' == $action ) : ?>
    159164<tr id="revision">
    160         <th scope="row"></th>
    161165        <th scope="col" class="th-full">
    162                 <span class="alignleft"><?php printf( __('Older: %s'), wp_post_revision_title( $left_revision ) ); ?></span>
    163                 <span class="alignright"><?php printf( __('Newer: %s'), wp_post_revision_title( $right_revision ) ); ?></span>
     166                <table width="100%" cellspacing="0" cellpadding="0">
     167                        <tr>
     168                                <td width="50%">
     169                                        <?php printf('<div class="revision-type-left">%s</div><div class="revision-avatar-left">%s</div><div class="revision-title-left">%s</div>',
     170                                                                        __('Older'),
     171                                                                        get_avatar( $left_revision->post_author, 22 ),
     172                                                                        wp_post_revision_title( $left_revision )
     173                                                                 ); ?>
     174                                </td>
     175                                <td width="50%">
     176                                        <?php printf('<div class="revision-type-right">%s</div><div class="revision-title-right">%s</div><div class="revision-avatar-right">%s</div>',
     177                                                                        __('Newer'),
     178                                                                        wp_post_revision_title( $right_revision ),
     179                                                                        get_avatar( $right_revision->post_author, 22 )
     180                                                                 ); ?>
     181                                </td>
     182                        </tr>
     183                </table>
    164184        </th>
    165185</tr>
    166186<?php endif;
    167187
    168188// use get_post_to_edit filters?
    169189$identical = true;
     190$linesadded=0;
     191$linesdeleted=0;
    170192foreach ( _wp_post_revision_fields() as $field => $field_title ) :
    171193        if ( 'diff' == $action ) {
    172194                $left_content = apply_filters( "_wp_post_revision_field_$field", $left_revision->$field, $field );
    173195                $right_content = apply_filters( "_wp_post_revision_field_$field", $right_revision->$field, $field );
    174                 if ( !$content = wp_text_diff( $left_content, $right_content ) )
     196                if ( !$content = wp_text_diff_with_count( $left_content, $right_content ) )
    175197                        continue; // There is no difference between left and right
     198                $htmlcontent = $content[ 'html' ];
     199                $linesadded += $content[ 'linesadded' ];
     200                $linesdeleted += $content[ 'linesdeleted' ];
     201
    176202                $identical = false;
    177203        } else {
    178                 add_filter( "_wp_post_revision_field_$field", 'htmlspecialchars' );
    179                 $content = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field );
     204                add_filter( "_wp_post_revision_field_$field", 'wp_kses_post' );
     205                $htmlcontent = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field );
    180206        }
     207
    181208        ?>
    182209
    183210        <tr id="revision-field-<?php echo $field; ?>">
    184                 <th scope="row"><?php echo esc_html( $field_title ); ?></th>
    185                 <td><div class="pre"><?php echo $content; ?></div></td>
     211                <td><div class="pre"><?php echo $htmlcontent; ?></div></td>
    186212        </tr>
    187213
    188214        <?php
    189215
    190216endforeach;
     217?>
     218<div class="revision-summary-area">
     219        <div class="revisions-header-deleted"><?php echo (0 != $linesdeleted ? '-' : '' ) . $linesdeleted; ?></div>
     220        <div class="revisions-header-added"><?php echo (0 != $linesadded ? '+' : '' ) . $linesadded; ?></div>
     221</div>
     222<?php
    191223
    192224if ( 'diff' == $action && $identical ) :
    193225
     
    205237
    206238<br class="clear" />
    207239
    208 <h3><?php echo $title; ?></h3>
    209 
    210240<?php
    211241
    212242$args = array( 'format' => 'form-table', 'parent' => true, 'right' => $right, 'left' => $left );
  • wp-admin/css/colors-fresh.css

     
    13501350
    13511351/* Diff */
    13521352table.diff .diff-deletedline {
    1353         background-color: #fdd;
     1353        color: #D4362F;
     1354        text-decoration: line-through;
    13541355}
    13551356
     1357table.diff .diff-deletedline-indicator, .revisions-header-deleted {
     1358        color: #D4362F;
     1359        text-align: right;
     1360}
     1361.revision-summary-area { /*move the diff summary to the upper right*/
     1362        position: absolute;
     1363        top: 20px;
     1364        right: 20px;
     1365}
     1366.revisions-header-deleted, .revisions-header-added {
     1367        float: right;
     1368        font-size: 1.6em;
     1369        font-weight: bold;
     1370        padding: 3px;
     1371}
     1372
     1373.revision-post-list-title {
     1374        float: left;
     1375        font-weight: bold;
     1376        font-size: 16px;
     1377        line-height: 24px;
     1378        color: #676767;
     1379}
     1380
    13561381table.diff .diff-deletedline del {
    13571382        background-color: #f99;
    13581383}
    13591384
    13601385table.diff .diff-addedline {
    1361         background-color: #dfd;
     1386        color: #00A100;
    13621387}
    13631388
     1389table.diff .diff-addedline-indicator, .revisions-header-added {
     1390        color: #00A100; /* dark green for + (added) symbol and header diffs */
     1391}
     1392
     1393table.diff li {
     1394        margin-left: 12px; /*add some left margin to li's in the diff or they hand outside the box*/
     1395}
     1396
    13641397table.diff .diff-addedline ins {
    13651398        background-color: #9f9;
    13661399}
  • wp-admin/css/wp-admin.css

     
    44114411.form-table td {
    44124412        margin-bottom: 9px;
    44134413        padding: 8px 10px;
    4414         line-height: 20px;
     4414        line-height: 24px;
    44154415        font-size: 12px;
    44164416}
    44174417
     
    85858585.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap {
    85868586        margin-left: 8em;
    85878587}
     8588.revision-title-left {
     8589        float: left;
     8590        font-size: 1.1em;
     8591}
     8592
     8593.revision-title-right {
     8594        float: right;
     8595        font-size: 1.1em;
     8596        padding-right: 5px;
     8597}
     8598
     8599.revision-type-left {
     8600        float: right;
     8601        font-size: 1.4em;
     8602        color: #999;
     8603}
     8604
     8605.revision-type-right {
     8606        float: left;
     8607        font-size: 1.4em;
     8608        color: #999;
     8609        padding-left: 30px;
     8610}
     8611
     8612.revision-avatar-left {
     8613        float: left;
     8614        margin-left: 5px;
     8615        margin-right: 5px;
     8616}
     8617
     8618.revision-avatar-right {
     8619        float: right;
     8620        margin-right: 5px;
     8621        margin-left: 5px;
     8622}
     8623
     8624.form-table tr#revision th {
     8625        vertical-align: top;
     8626        text-align: left;
     8627        padding-top: 10px;
     8628        padding-bottom: 10px;
     8629        padding-right: 10px;
     8630        padding-left: 0;
     8631        width: 200px;
     8632}
     8633
     8634.form-table tr#revision td {
     8635        font-size: 12px;
     8636        line-height: 24px;
     8637        margin-bottom: 9px;
     8638        padding-top: 8px;
     8639        padding-bottom: 8px;
     8640        padding-right: 10px;
     8641        padding-left: 0;
     8642}
     8643
     8644.form-table tr#revision-field-post_content .pre {
     8645        margin: 0;
     8646        padding: 0;
     8647}
     8648
     8649.form-table  tr#revision-field-post_content td {
     8650        font-size: 12px;
     8651        line-height: 24px;
     8652        margin-bottom: 9px;
     8653        padding: 8px 10px;
     8654}
     8655
     8656
     8657.form-table tr#revision-field-post_content td.diff-addedline-indicator {
     8658        padding-left: 30px;
     8659}
     8660table.post-revisions a {
     8661        line-height: 24px;
     8662}
     8663table.post-revisions img {
     8664        float: left;
     8665        margin-right: 5px;
     8666}