Making WordPress.org

Changeset 5218


Ignore:
Timestamp:
03/30/2017 09:44:49 PM (10 years ago)
Author:
obenland
Message:

Plugin Directory: Update developers section.

Replaces lists with full sentences and adds locale details.

See #1824.
Fixes #2629.

Location:
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-i18n.php

    r4764 r5218  
    431431         */
    432432        public function find_all_translations_for_plugin( $slug, $branch, $min_percent = 0 ) {
     433                $post = Plugin_Directory::get_plugin_post( $slug );
     434
     435                return wp_filter_object_list( $this->get_locales( $post, $branch, $min_percent ), null, null, 'wp_locale' );
     436        }
     437
     438        /**
     439         * Returns a list of locale objects for a given plugin slug and branch.
     440         *
     441         * @param int|\WP_Post|null $post        Optional. Post ID or post object. Defaults to global $post.
     442         * @param string            $branch      Optional. Branch - 'stable-readme' for example. Default: 'stable'.
     443         * @param int               $min_percent Optional. Only return locales where percent_translated is >= this value.
     444         *                                       Default: 95.
     445         * @return array
     446         */
     447        public function get_locales( $post = null, $branch = 'stable', $min_percent = 95 ) {
     448                $post = get_post( $post );
    433449
    434450                // This naively hits the API. It could probably be re-written to query the DB instead.
    435                 $api_url = esc_url_raw( 'https://translate.wordpress.org/api/projects/wp-plugins/' . $slug . '/' . $branch, array( 'https' ) );
    436 
    437                 $out    = array();
    438                 $http   = new \WP_Http();
    439                 $result = $http->request( $api_url );
     451                $api_url = esc_url_raw( 'https://translate.wordpress.org/api/projects/wp-plugins/' . $post->post_name . '/' . $branch, array( 'https' ) );
     452
     453                $locales = array();
     454                $http    = new \WP_Http();
     455                $result  = $http->request( $api_url );
    440456
    441457                if ( ! is_wp_error( $result ) ) {
    442458                        $data = json_decode( $result['body'] );
    443459
    444                         if ( $data && isset( $data->translation_sets ) ) {
    445                                 foreach ( $data->translation_sets as $translation ) {
    446                                         if ( $translation->percent_translated >= $min_percent ) {
    447                                                 $out[] = $translation->wp_locale;
    448                                         }
    449                                 }
     460                        if ( ! empty( $data->translation_sets ) ) {
     461                                $locales = array_filter( $data->translation_sets, function( $locale ) use ( $min_percent ) {
     462                                        return $locale->percent_translated >= $min_percent;
     463                                } );
    450464                        }
    451465                }
    452466
    453                 return $out;
     467                return $locales;
    454468        }
    455469}
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-developers.php

    r5214 r5218  
    11<?php
    22namespace WordPressdotorg\Plugin_Directory\Shortcodes;
    3 use WordPressdotorg\Plugin_Directory\Template;
     3use WordPressdotorg\Plugin_Directory\Plugin_I18n;
    44use WordPressdotorg\Plugin_Directory\Tools;
    55
    … …  
    1616        static function display() {
    1717                $post   = get_post();
    18                 $output = '<p>' . sprintf( __( '%s is open source software. The following people have contributed to this plugin.', 'wporg-plugins' ), get_the_title( $post ) ) . '</p>';
     18                $slug   = $post->post_name;
     19                $title  = get_the_title( $post );
     20                $output = '<p>' . sprintf( __( '%s is open source software. The following people have contributed to this plugin.', 'wporg-plugins' ), $title ) . '</p>';
    1921
    2022                ob_start();
    … …  
    2830                $output .= ob_get_clean();
    2931
     32                $locales = Plugin_I18n::instance()->get_locales();
     33                $output .= '<p>';
     34
     35                if ( ! empty( $locales ) ) {
     36                        $locales_list = implode( ', ', array_map( function( $locale ) use ( $slug ) {
     37                                return sprintf( '<a href="%1$s">%2$s</a>', esc_url( "{$locale->locale}.wordpress.org/plugins/{$slug}/" ), $locale->name );
     38                        }, $locales ) );
     39                        /* Translators: 1: Plugin name; 2: Number of locales; 3: List of locales; */
     40                        $output .= sprintf( '%1$s has been translated into these %2$d locales: %3$s.', $title, count( $locales ), $locales_list ) . ' ';
     41                        $output .= sprintf(
     42                                /* Translators: URL to translator view; */
     43                                __( 'Thank you to <a href="%s">the translators</a> for their contributions.', 'wporg-plugins' ),
     44                                esc_url( "https://translate.wordpress.org/projects/wp-plugins/{$slug}/contributors" )
     45                        );
     46                        $output .= '<br />';
     47                }
     48
     49                /* Translators: 1: GlotPress URL; 2: Plugin name; */
     50                $output .= sprintf( __( '<a href="%1$s">Translate %2$s into your language.</a>', 'wporg-plugins' ), esc_url( 'https://translate.wordpress.org/projects/wp-plugins/' . $slug ), $title );
     51                $output .= '</p>';
     52
     53                $output   .= '<h3>' . __( 'Interested in development?', 'wporg-plugins' ) . '</h3>';
     54                /* Translators: 1: Trac URL; 2: Development log URL; 3: RSS URL; */
     55                $format    = __( '<a href="%1$s">Browse the code</a> or subscribe to the <a href="%2$s">development log</a> by <a href="%3$s">RSS</a>.' );
     56                $email_url = '';
     57
    3058                if ( is_user_logged_in() ) {
     59                        /* Translators: 1: Trac URL; 2: Development log URL; 3: RSS URL; 4: Email subscription URL; */
     60                        $format     = __( '<a href="%1$s">Browse the code</a> or subscribe to the <a href="%2$s">development log</a> by <a href="%4$s">email</a> or <a href="%3$s">RSS</a>.' );
    3161                        $subscribed = Tools::subscribed_to_plugin_commits( $post, get_current_user_id() );
    32 
    33                         $subscribe_change_url = esc_url( add_query_arg( array(
     62                        $email_url  = esc_url( add_query_arg( array(
    3463                                '_wpnonce' => wp_create_nonce( 'wp_rest' ),
    3564                                ( $subscribed ? 'unsubscribe' : 'subscribe' ) => '1',
    36                         ), home_url( 'wp-json/plugins/v1/plugin/' . $post->post_name . '/commit-subscription' ) ) );
     65                        ), home_url( "wp-json/plugins/v1/plugin/{$slug}/commit-subscription" ) ) );
    3766                }
    3867
    39                 return $output .
    40                         '<h3>' . __( 'Browse the code', 'wporg-plugins' ) . '</h3>' .
    41                         '<ul>' .
    42                                 '<li>' .
    43                                         '<a href="' . esc_url( "https://plugins.trac.wordpress.org/log/{$post->post_name}/" ) . '" rel="nofollow">' . __( 'Development Log', 'wporg-plugins' ) . '</a>' . "\n" .
    44                                         '<a href="' . esc_url( "https://plugins.trac.wordpress.org/log/{$post->post_name}/?limit=100&mode=stop_on_copy&format=rss" ) . '" rel="nofollow"><img src="https://s.w.org/style/images/feedicon.png" /></a>' .
    45                                 '</li>' .
    46                                 '<li><a href="' . esc_url( "https://plugins.svn.wordpress.org/{$post->post_name}/" ) . '" rel="nofollow">' . __( 'Subversion Repository', 'wporg-plugins' ) . '</a></li>' .
    47                                 '<li><a href="' . esc_url( "https://plugins.trac.wordpress.org/browser/{$post->post_name}/" ) . '" rel="nofollow">' . __( 'Browse in Trac', 'wporg-plugins' ) . '</a></li>' .
    48                                 '<li><a href="' . esc_url( "https://translate.wordpress.org/projects/wp-plugins/{$post->post_name}/" ) . '" rel="nofollow">' . __( 'Translation Contributors', 'wporg-plugins' ) . '</a></li>' .
    49                                  ( !is_user_logged_in() ? '' : (
    50                                         $subscribed ?
    51                                         "<li><a href='$subscribe_change_url'>" . __( 'Unsubscribe from plugin commits', 'wporg-plugins' ) . '</a></li>' :
    52                                         "<li><a href='$subscribe_change_url'>" . __( 'Subscribe to plugin commits via email', 'wporg-plugins' ) . '</a></li>'
    53                                  ) ) .
    54                         '</ul>';
     68                $output .= '<p>' . sprintf(
     69                        $format,
     70                        esc_url( "https://plugins.trac.wordpress.org/browser/{$slug}/" ),
     71                        esc_url( "https://plugins.trac.wordpress.org/log/{$slug}/" ),
     72                        esc_url( "https://plugins.trac.wordpress.org/log/{$slug}/?limit=100&mode=stop_on_copy&format=rss" ),
     73                        $email_url
     74                ) . '</p>';
     75
     76                return $output;
    5577        }
    5678}
Note: See TracChangeset for help on using the changeset viewer.