~canonical-sysadmins/wordpress/4.1.3

« back to all changes in this revision

Viewing changes to wp-admin/includes/revision.php

  • Committer: Nick Moffitt
  • Date: 2015-01-15 11:05:37 UTC
  • mfrom: (1.1.1 wp4-upstream)
  • Revision ID: nick.moffitt@canonical.com-20150115110537-8bp1y42eyg0jsa7c
Tags: 4.1
MergeĀ upstreamĀ versionĀ 4.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
                /**
59
59
                 * Contextually filter a post revision field.
60
60
                 *
61
 
                 * The dynamic portion of the hook name, $field, corresponds to each of the post
 
61
                 * The dynamic portion of the hook name, `$field`, corresponds to each of the post
62
62
                 * fields of the revision object being iterated over in a foreach statement.
63
63
                 *
64
64
                 * @since 3.6.0
66
66
                 * @param string  $compare_from->$field The current revision field to compare to or from.
67
67
                 * @param string  $field                The current revision field.
68
68
                 * @param WP_Post $compare_from         The revision post object to compare to or from.
69
 
                 * @param string  null                  The context of whether the current revision is the old or the new one. Values are 'to' or 'from'.
 
69
                 * @param string  null                  The context of whether the current revision is the old
 
70
                 *                                      or the new one. Values are 'to' or 'from'.
70
71
                 */
71
72
                $content_from = $compare_from ? apply_filters( "_wp_post_revision_field_$field", $compare_from->$field, $field, $compare_from, 'from' ) : '';
72
73
 
73
74
                /** This filter is documented in wp-admin/includes/revision.php */
74
75
                $content_to = apply_filters( "_wp_post_revision_field_$field", $compare_to->$field, $field, $compare_to, 'to' );
75
76
 
76
 
                $diff = wp_text_diff( $content_from, $content_to, array( 'show_split_view' => true ) );
 
77
                $args = array(
 
78
                        'show_split_view' => true
 
79
                );
 
80
 
 
81
                /**
 
82
                 * Filter revisions text diff options.
 
83
                 *
 
84
                 * Filter the options passed to {@see wp_text_diff()} when viewing a post revision.
 
85
                 *
 
86
                 * @since 4.1.0
 
87
                 *
 
88
                 * @param array   $args {
 
89
                 *     Associative array of options to pass to {@see wp_text_diff()}.
 
90
                 *
 
91
                 *     @type bool $show_split_view True for split view (two columns), false for
 
92
                 *                                 un-split view (single column). Default true.
 
93
                 * }
 
94
                 * @param string  $field        The current revision field.
 
95
                 * @param WP_Post $compare_from The revision post to compare from.
 
96
                 * @param WP_Post $compare_to   The revision post to compare to.
 
97
                 */
 
98
                $args = apply_filters( 'revision_text_diff_options', $args, $field, $compare_from, $compare_to );
 
99
 
 
100
                $diff = wp_text_diff( $content_from, $content_to, $args );
77
101
 
78
102
                if ( ! $diff && 'post_title' === $field ) {
79
103
                        // It's a better user experience to still show the Title, even if it didn't change.
92
116
                        );
93
117
                }
94
118
        }
95
 
        return $return;
 
119
 
 
120
        /**
 
121
         * Filter the fields displayed in the post revision diff UI.
 
122
         *
 
123
         * @since 4.1.0
 
124
         *
 
125
         * @param array   $return       Revision UI fields. Each item is an array of id, name and diff.
 
126
         * @param WP_Post $compare_from The revision post to compare from.
 
127
         * @param WP_Post $compare_to   The revision post to compare to.
 
128
         */
 
129
        return apply_filters( 'wp_get_revision_ui_diff', $return, $compare_from, $compare_to );
 
130
 
96
131
}
97
132
 
98
133
/**
177
212
                );
178
213
        }
179
214
 
 
215
        /**
 
216
         * If we only have one revision, the initial revision is missing; This happens
 
217
         * when we have an autsosave and the user has clicked 'View the Autosave'
 
218
         */
 
219
        if ( 1 === sizeof( $revisions ) ) {
 
220
                $revisions[ $post->ID ] = array(
 
221
                        'id'         => $post->ID,
 
222
                        'title'      => get_the_title( $post->ID ),
 
223
                        'author'     => $authors[ $post->post_author ],
 
224
                        'date'       => date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->modified ) ),
 
225
                        'dateShort'  => date_i18n( _x( 'j M @ G:i', 'revision date short format' ), strtotime( $post->modified ) ),
 
226
                        'timeAgo'    => sprintf( __( '%s ago' ), human_time_diff( strtotime( $post->post_modified_gmt ), $now_gmt ) ),
 
227
                        'autosave'   => false,
 
228
                        'current'    => true,
 
229
                        'restoreUrl' => false,
 
230
                );
 
231
                $current_id = $post->ID;
 
232
        }
 
233
 
180
234
        /*
181
235
         * If a post has been saved since the last revision (no revisioned fields
182
236
         * were changed), we may not have a "current" revision. Mark the latest
226
280
                'revisionIds'      => array_keys( $revisions ),
227
281
        );
228
282
}
 
283
 
 
284
/**
 
285
 * Print JavaScript templates required for the revisions experience.
 
286
 *
 
287
 * @since 4.1.0
 
288
 *
 
289
 * @global WP_Post $post The global `$post` object.
 
290
 */
 
291
function wp_print_revision_templates() {
 
292
        global $post;
 
293
        ?><script id="tmpl-revisions-frame" type="text/html">
 
294
                <div class="revisions-control-frame"></div>
 
295
                <div class="revisions-diff-frame"></div>
 
296
        </script>
 
297
 
 
298
        <script id="tmpl-revisions-buttons" type="text/html">
 
299
                <div class="revisions-previous">
 
300
                        <input class="button" type="button" value="<?php echo esc_attr_x( 'Previous', 'Button label for a previous revision' ); ?>" />
 
301
                </div>
 
302
 
 
303
                <div class="revisions-next">
 
304
                        <input class="button" type="button" value="<?php echo esc_attr_x( 'Next', 'Button label for a next revision' ); ?>" />
 
305
                </div>
 
306
        </script>
 
307
 
 
308
        <script id="tmpl-revisions-checkbox" type="text/html">
 
309
                <div class="revision-toggle-compare-mode">
 
310
                        <label>
 
311
                                <input type="checkbox" class="compare-two-revisions"
 
312
                                <#
 
313
                                if ( 'undefined' !== typeof data && data.model.attributes.compareTwoMode ) {
 
314
                                        #> checked="checked"<#
 
315
                                }
 
316
                                #>
 
317
                                />
 
318
                                <?php esc_attr_e( 'Compare any two revisions' ); ?>
 
319
                        </label>
 
320
                </div>
 
321
        </script>
 
322
 
 
323
        <script id="tmpl-revisions-meta" type="text/html">
 
324
                <# if ( ! _.isUndefined( data.attributes ) ) { #>
 
325
                        <div class="diff-title">
 
326
                                <# if ( 'from' === data.type ) { #>
 
327
                                        <strong><?php _ex( 'From:', 'Followed by post revision info' ); ?></strong>
 
328
                                <# } else if ( 'to' === data.type ) { #>
 
329
                                        <strong><?php _ex( 'To:', 'Followed by post revision info' ); ?></strong>
 
330
                                <# } #>
 
331
                                <div class="author-card<# if ( data.attributes.autosave ) { #> autosave<# } #>">
 
332
                                        {{{ data.attributes.author.avatar }}}
 
333
                                        <div class="author-info">
 
334
                                        <# if ( data.attributes.autosave ) { #>
 
335
                                                <span class="byline"><?php printf( __( 'Autosave by %s' ),
 
336
                                                        '<span class="author-name">{{ data.attributes.author.name }}</span>' ); ?></span>
 
337
                                        <# } else if ( data.attributes.current ) { #>
 
338
                                                <span class="byline"><?php printf( __( 'Current Revision by %s' ),
 
339
                                                        '<span class="author-name">{{ data.attributes.author.name }}</span>' ); ?></span>
 
340
                                        <# } else { #>
 
341
                                                <span class="byline"><?php printf( __( 'Revision by %s' ),
 
342
                                                        '<span class="author-name">{{ data.attributes.author.name }}</span>' ); ?></span>
 
343
                                        <# } #>
 
344
                                                <span class="time-ago">{{ data.attributes.timeAgo }}</span>
 
345
                                                <span class="date">({{ data.attributes.dateShort }})</span>
 
346
                                        </div>
 
347
                                <# if ( 'to' === data.type && data.attributes.restoreUrl ) { #>
 
348
                                        <input  <?php if ( wp_check_post_lock( $post->ID ) ) { ?>
 
349
                                                disabled="disabled"
 
350
                                        <?php } else { ?>
 
351
                                                <# if ( data.attributes.current ) { #>
 
352
                                                        disabled="disabled"
 
353
                                                <# } #>
 
354
                                        <?php } ?>
 
355
                                        <# if ( data.attributes.autosave ) { #>
 
356
                                                type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Autosave' ); ?>" />
 
357
                                        <# } else { #>
 
358
                                                type="button" class="restore-revision button button-primary" value="<?php esc_attr_e( 'Restore This Revision' ); ?>" />
 
359
                                        <# } #>
 
360
                                <# } #>
 
361
                        </div>
 
362
                <# if ( 'tooltip' === data.type ) { #>
 
363
                        <div class="revisions-tooltip-arrow"><span></span></div>
 
364
                <# } #>
 
365
        <# } #>
 
366
        </script>
 
367
 
 
368
        <script id="tmpl-revisions-diff" type="text/html">
 
369
                <div class="loading-indicator"><span class="spinner"></span></div>
 
370
                <div class="diff-error"><?php _e( 'Sorry, something went wrong. The requested comparison could not be loaded.' ); ?></div>
 
371
                <div class="diff">
 
372
                <# _.each( data.fields, function( field ) { #>
 
373
                        <h3>{{ field.name }}</h3>
 
374
                        {{{ field.diff }}}
 
375
                <# }); #>
 
376
                </div>
 
377
        </script><?php
 
378
}
 
 
b'\\ No newline at end of file'