WordPress.org

Make WordPress Core

Ticket #41675: 41675.diff

File 41675.diff, 7.2 KB (added by herregroen, 4 years ago)

Adds a 'media_library_show_months_select' which returns a boolean.

  • src/wp-includes/js/media/views/attachments/browser.js

     
    2020 */
    2121var View = wp.media.View,
    2222        mediaTrash = wp.media.view.settings.mediaTrash,
     23        showMonths = wp.media.view.settings.showMonths,
    2324        l10n = wp.media.view.l10n,
    2425        $ = jQuery,
    2526        AttachmentsBrowser;
     
    157158                                priority: -90
    158159                        }).render() );
    159160
    160                         // DateFilter is a <select>, screen reader text needs to be rendered before
    161                         this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    162                                 value: l10n.filterByDate,
    163                                 attributes: {
    164                                         'for': 'media-attachment-date-filters'
    165                                 },
    166                                 priority: -75
    167                         }).render() );
    168                         this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
    169                                 controller: this.controller,
    170                                 model:      this.collection.props,
    171                                 priority: -75
    172                         }).render() );
     161                        if ( showMonths ) {
     162                                // DateFilter is a <select>, screen reader text needs to be rendered before
     163                                this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
     164                                        value: l10n.filterByDate,
     165                                        attributes: {
     166                                                'for': 'media-attachment-date-filters'
     167                                        },
     168                                        priority: -75
     169                                }).render() );
     170                                this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
     171                                        controller: this.controller,
     172                                        model:      this.collection.props,
     173                                        priority: -75
     174                                }).render() );
     175                        }
    173176
    174177                        // BulkSelection is a <div> with subviews, including screen reader text
    175178                        this.toolbar.set( 'selectModeToggleButton', new wp.media.view.SelectModeToggleButton({
     
    278281                                }).render() );
    279282                        }
    280283
    281                 } else if ( this.options.date ) {
     284                } else if ( showMonths && this.options.date ) {
    282285                        // DateFilter is a <select>, screen reader text needs to be rendered before
    283286                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    284287                                value: l10n.filterByDate,
  • src/wp-includes/js/media-views.js

     
    37513751 */
    37523752var View = wp.media.View,
    37533753        mediaTrash = wp.media.view.settings.mediaTrash,
     3754        showMonths = wp.media.view.settings.showMonths,
    37543755        l10n = wp.media.view.l10n,
    37553756        $ = jQuery,
    37563757        AttachmentsBrowser;
     
    38883889                                priority: -90
    38893890                        }).render() );
    38903891
    3891                         // DateFilter is a <select>, screen reader text needs to be rendered before
    3892                         this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    3893                                 value: l10n.filterByDate,
    3894                                 attributes: {
    3895                                         'for': 'media-attachment-date-filters'
    3896                                 },
    3897                                 priority: -75
    3898                         }).render() );
    3899                         this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
    3900                                 controller: this.controller,
    3901                                 model:      this.collection.props,
    3902                                 priority: -75
    3903                         }).render() );
     3892                        if ( showMonths ) {
     3893                                // DateFilter is a <select>, screen reader text needs to be rendered before
     3894                                this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
     3895                                        value: l10n.filterByDate,
     3896                                        attributes: {
     3897                                                'for': 'media-attachment-date-filters'
     3898                                        },
     3899                                        priority: -75
     3900                                }).render() );
     3901                                this.toolbar.set( 'dateFilter', new wp.media.view.DateFilter({
     3902                                        controller: this.controller,
     3903                                        model:      this.collection.props,
     3904                                        priority: -75
     3905                                }).render() );
     3906                        }
    39043907
    39053908                        // BulkSelection is a <div> with subviews, including screen reader text
    39063909                        this.toolbar.set( 'selectModeToggleButton', new wp.media.view.SelectModeToggleButton({
     
    40094012                                }).render() );
    40104013                        }
    40114014
    4012                 } else if ( this.options.date ) {
     4015                } else if ( showMonths && this.options.date ) {
    40134016                        // DateFilter is a <select>, screen reader text needs to be rendered before
    40144017                        this.toolbar.set( 'dateFilterLabel', new wp.media.view.Label({
    40154018                                value: l10n.filterByDate,
  • src/wp-includes/media.php

     
    34013401        }
    34023402
    34033403        /**
    3404          * Allows overriding the list of months displayed in the media library.
     3404         * Allows showing or hiding the months select in the media library.
    34053405         *
    3406          * By default (if this filter does not return an array), a query will be
    3407          * run to determine the months that have media items.  This query can be
    3408          * expensive for large media libraries, so it may be desirable for sites to
    3409          * override this behavior.
     3406         * By default, the months select will always be shown in the media library
     3407         * and a list of months will be generated to populate the select with.
     3408         * If `false` is returned the 'media_library_months_with_files' filter
     3409         * will not be run and no select will be shown.
    34103410         *
    3411          * @since 4.7.4
     3411         * @link https://core.trac.wordpress.org/ticket/41675
    34123412         *
    3413          * @link https://core.trac.wordpress.org/ticket/31071
    3414          *
    3415          * @param array|null An array of objects with `month` and `year`
    3416          *                   properties, or `null` (or any other non-array value)
    3417          *                   for default behavior.
     3413         * @param bool Whether or not to show the months select.
    34183414         */
    3419         $months = apply_filters( 'media_library_months_with_files', null );
    3420         if ( ! is_array( $months ) ) {
    3421                 $months = $wpdb->get_results( $wpdb->prepare( "
    3422                         SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
    3423                         FROM $wpdb->posts
    3424                         WHERE post_type = %s
    3425                         ORDER BY post_date DESC
    3426                 ", 'attachment' ) );
    3427         }
    3428         foreach ( $months as $month_year ) {
    3429                 $month_year->text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month_year->month ), $month_year->year );
     3415        $show_months_select = apply_filters( 'media_library_show_months_select', true );
     3416        $months = null;
     3417        if ( true === $show_months_select ) {
     3418                /**
     3419                 * Allows overriding the list of months displayed in the media library.
     3420                 *
     3421                 * By default (if this filter does not return an array), a query will be
     3422                 * run to determine the months that have media items.  This query can be
     3423                 * expensive for large media libraries, so it may be desirable for sites
     3424                 * to override this behavior.
     3425                 *
     3426                 * @since 4.7.4
     3427                 *
     3428                 * @link https://core.trac.wordpress.org/ticket/31071
     3429                 *
     3430                 * @param array|null An array of objects with `month` and `year`
     3431                 *                   properties, or `null` (or any other non-array value)
     3432                 *                   for default behavior.
     3433                 */
     3434                $months = apply_filters( 'media_library_months_with_files', null );
     3435                if ( ! is_array( $months ) ) {
     3436                        $months = $wpdb->get_results( $wpdb->prepare( "
     3437                                SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
     3438                                FROM $wpdb->posts
     3439                                WHERE post_type = %s
     3440                                ORDER BY post_date DESC
     3441                        ", 'attachment' ) );
     3442                }
     3443                foreach ( $months as $month_year ) {
     3444                        $month_year->text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month_year->month ), $month_year->year );
     3445                }
    34303446        }
    34313447
    34323448        $settings = array(
     
    34503466                'embedExts'    => $exts,
    34513467                'embedMimes'   => $ext_mimes,
    34523468                'contentWidth' => $content_width,
     3469                'showMonths'   => $show_months_select,
    34533470                'months'       => $months,
    34543471                'mediaTrash'   => MEDIA_TRASH ? 1 : 0,
    34553472        );