Making WordPress.org

Changeset 3559


Ignore:
Timestamp:
06/22/2016 04:06:56 PM (7 years ago)
Author:
ocean90
Message:

Plugin Directory: Display a locale banner on non-plugin details pages.

See #1728.

Location:
sites/trunk/wordpress.org/public_html/wp-content
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-locale-banner.php

    r3556 r3559  
    4242        $all_locales = wp_list_pluck( $locale_subdomain_assoc, 'locale' );
    4343
    44         // Get the active language packs of the plugin.
    45         $language_packs = $wpdb->get_results( $wpdb->prepare( "
    46             SELECT *
    47             FROM language_packs
    48             WHERE
    49                 type = 'plugin' AND
    50                 domain = %s AND
    51                 active = 1
    52             GROUP BY language",
    53             $plugin_slug
    54         ) );
    55 
    56         // Retrieve all the WordPress locales in which the plugin is translated.
    57         $translated_locales = wp_list_pluck( $language_packs, 'language' );
     44        $is_plugin_request = ! empty( $plugin_slug );
     45
     46        if ( $is_plugin_request ) {
     47            // Get the active language packs of the plugin.
     48            $language_packs = $wpdb->get_results( $wpdb->prepare( "
     49                SELECT *
     50                FROM language_packs
     51                WHERE
     52                    type = 'plugin' AND
     53                    domain = %s AND
     54                    active = 1
     55                GROUP BY language",
     56                $plugin_slug
     57            ) );
     58
     59            // Retrieve all the WordPress locales in which the plugin is translated.
     60            $translated_locales = wp_list_pluck( $language_packs, 'language' );
     61        } else {
     62            $translated_locales = $all_locales;
     63        }
    5864
    5965        // Get the WordPress locales based on the HTTP accept language header.
     
    7985        if ( 'en_US' === $current_locale ) {
    8086            if ( 1 === count( $suggest_named_locales ) ) {
    81                 $locale = key( $suggest_named_locales );
     87                $locale   = key( $suggest_named_locales );
    8288                $language = current( $suggest_named_locales );
    83                 $suggest_string = sprintf(
    84                     $this->translate( 'This plugin is also available in %s.', $locale ),
    85                     sprintf(
    86                         '<a href="https://%s.wordpress.org/plugins-wp/%s/">%s</a>',
    87                         $locale_subdomain_assoc[ $locale ]->subdomain,
    88                         $plugin_slug,
    89                         $language
    90                     )
    91                 );
     89
     90                if ( $is_plugin_request ) {
     91                    $suggest_string = sprintf(
     92                        $this->translate( 'This plugin is also available in %s.', $locale ),
     93                        sprintf(
     94                            '<a href="https://%s.wordpress.org/plugins-wp/%s/">%s</a>',
     95                            $locale_subdomain_assoc[ $locale ]->subdomain,
     96                            $plugin_slug,
     97                            $language
     98                        )
     99                    );
     100                } else {
     101                    $suggest_string = sprintf(
     102                        $this->translate( 'The plugin directory is also available in %s.', $locale ),
     103                        sprintf(
     104                            '<a href="https://%s.wordpress.org/plugins-wp/">%s</a>',
     105                            $locale_subdomain_assoc[ $locale ]->subdomain,
     106                            $language
     107                        )
     108                    );
     109                }
    92110            } elseif ( ! empty( $suggest_named_locales ) ) {
    93111                $primary_locale = key( $suggest_named_locales );
     
    95113                array_shift( $suggest_named_locales );
    96114
    97                 $other_suggest = '';
    98                 foreach ( $suggest_named_locales as $locale => $language ) {
    99                     $other_suggest .= sprintf(
    100                         '<a href="https://%s.wordpress.org/plugins-wp/%s/">%s</a>, ',
    101                         $locale_subdomain_assoc[ $locale ]->subdomain,
    102                         $plugin_slug,
    103                         $language
     115                if ( $is_plugin_request ) {
     116                    $other_suggest = '';
     117                    foreach ( $suggest_named_locales as $locale => $language ) {
     118                        $other_suggest .= sprintf(
     119                            '<a href="https://%s.wordpress.org/plugins-wp/%s/">%s</a>, ',
     120                            $locale_subdomain_assoc[ $locale ]->subdomain,
     121                            $plugin_slug,
     122                            $language
     123                        );
     124                    }
     125
     126                    $suggest_string = sprintf(
     127                        $this->translate( 'This plugin is also available in %1$s (also: %2$s).', $primary_locale ),
     128                        sprintf(
     129                            '<a href="https://%s.wordpress.org/plugins-wp/%s/">%s</a>',
     130                            $locale_subdomain_assoc[ $primary_locale ]->subdomain,
     131                            $plugin_slug,
     132                            $primary_language
     133                        ),
     134                        trim( $other_suggest, ' ,' )
    104135                    );
    105                 }
    106 
    107                 $suggest_string = sprintf(
    108                     $this->translate( 'This plugin is also available in %1$s (also: %2$s).', $primary_locale ),
    109                     sprintf(
    110                         '<a href="https://%s.wordpress.org/plugins-wp/%s/">%s</a>',
    111                         $locale_subdomain_assoc[ $primary_locale ]->subdomain,
    112                         $plugin_slug,
    113                         $primary_language
    114                     ),
    115                     trim( $other_suggest, ' ,' )
    116                 );
    117             }
    118         } elseif ( ! $current_locale_is_suggested && ! $current_locale_is_translated ) {
     136                } else {
     137                    $other_suggest = '';
     138                    foreach ( $suggest_named_locales as $locale => $language ) {
     139                        $other_suggest .= sprintf(
     140                            '<a href="https://%s.wordpress.org/plugins-wp/">%s</a>, ',
     141                            $locale_subdomain_assoc[ $locale ]->subdomain,
     142                            $language
     143                        );
     144                    }
     145
     146                    $suggest_string = sprintf(
     147                        $this->translate( 'The plugin directory is also available in %1$s (also: %2$s).', $primary_locale ),
     148                        sprintf(
     149                            '<a href="https://%s.wordpress.org/plugins-wp/">%s</a>',
     150                            $locale_subdomain_assoc[ $primary_locale ]->subdomain,
     151                            $primary_language
     152                        ),
     153                        trim( $other_suggest, ' ,' )
     154                    );
     155                }
     156            }
     157        } elseif ( ! $current_locale_is_suggested && ! $current_locale_is_translated && $is_plugin_request ) {
    119158            $suggest_string = sprintf(
    120159                $this->translate( 'This plugin is not available in %1$s yet. <a href="%2$s">Help translate it!</a>', $current_locale ),
     
    248287            2984794 => 'This plugin is also available in %1$s (also: %2$s).',
    249288            2984795 => 'This plugin is not available in %1$s yet. <a href="%2$s">Help translate it!</a>',
     289            0 => 'The plugin directory is also available in %s.',
     290            0 => 'The plugin directory is also available in %1$s (also: %2$s).',
    250291        );
    251292
    252293        $original_id = array_search( $string, $strings, true );
     294        if ( ! $original_id ) {
     295            return $string;
     296        }
    253297
    254298        require_once GLOTPRESS_LOCALES_PATH;
     
    311355/* translators: 1: native language name, 2: URL to translate.wordpress.org */
    312356__( 'This plugin is not available in %1$s yet. <a href="%2$s">Help translate it!</a>', 'wporg-plugins' );
     357/* translators: %s: native language name. */
     358__( 'The plugin directory is also available in %s.', 'wporg-plugins' );
     359/* translators: 1: native language name, 2: other native language names, comma separated */
     360__( 'The plugin directory is also available in %1$s (also: %2$s).', 'wporg-plugins' );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php

    r3556 r3559  
    7575    if ( is_singular( 'plugin' ) ) {
    7676        wp_enqueue_script( 'wporg-plugins-accordion', get_template_directory_uri() . '/js/section-accordion.js', array(), '20160525', true );
    77 
    78         wp_enqueue_script( 'wporg-plugins-locale-banner', get_template_directory_uri() . '/js/locale-banner.js', array(), '20160622', true );
    79         wp_localize_script( 'wporg-plugins-locale-banner', 'wporgLocaleBanner', array(
    80             'apiURL' => rest_url( '/plugins/v1/locale-banner' ),
    81             'currentPlugin' => get_queried_object()->post_name,
    82         ) );
    8377    }
     78
     79    wp_enqueue_script( 'wporg-plugins-locale-banner', get_template_directory_uri() . '/js/locale-banner.js', array(), '20160622', true );
     80    wp_localize_script( 'wporg-plugins-locale-banner', 'wporgLocaleBanner', array(
     81        'apiURL'        => rest_url( '/plugins/v1/locale-banner' ),
     82        'currentPlugin' => is_singular( 'plugin' ) ? get_queried_object()->post_name : '',
     83    ) );
    8484}
    8585add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\scripts' );
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/locale-banner.js

    r3556 r3559  
    22( function( $ ) {
    33
    4     $.ajax({
     4    $.ajax( {
    55        type: 'POST',
    6         url : wporgLocaleBanner.apiURL,
    7         dataType : 'json',
     6        url: wporgLocaleBanner.apiURL,
     7        dataType: 'json',
    88        data: {
    9             'plugin_slug' : wporgLocaleBanner.currentPlugin
     9            'plugin_slug': wporgLocaleBanner.currentPlugin
    1010        },
    11         success : function( response ) {
     11        success: function ( response ) {
    1212            if ( ! response.suggest_string ) {
    1313                return;
     
    1919            } );
    2020
    21             $( '.plugin-header' ).after( $banner );
     21            if ( $( 'body' ).hasClass( 'single-plugin' ) ) {
     22                $( '.plugin-header' ).after( $banner );
     23            } else {
     24                $( '.site-main' ).prepend( $banner );
     25            }
    2226        }
    2327    } );
Note: See TracChangeset for help on using the changeset viewer.