Making WordPress.org

Changeset 13088


Ignore:
Timestamp:
01/02/2024 02:44:07 AM (3 years ago)
Author:
tellyworth
Message:

Plugin Directory: Improved preview links for plugin mods

This adds separate "preview" and "pcp" links.

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

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-posts.php

    r13076 r13088  
    712712
    713713                        printf(
    714                                 '<a href="%1$s">%2$s</a><br>%3$s<br>(<a href="%4$s" target="_blank">preview</a>)</li>',
     714                                '<a href="%1$s">%2$s</a><br>%3$s<br>(<a href="%4$s" target="_blank">preview</a> | <a href="%5$s" target="_blank">pcp</a>)</li>',
    715715                                esc_url( $url ),
    716716                                esc_html( $name ),
    717717                                esc_html( $zip_size ),
    718                                 esc_url( Template::preview_link_zip( $post->post_name, $zip_file->ID ) )
     718                                esc_url( Template::preview_link_zip( $post->post_name, $zip_file->ID ) ),
     719                                esc_url( Template::preview_link_zip( $post->post_name, $zip_file->ID, 'pcp' ) )
    719720                        );
    720721                }
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php

    r13076 r13088  
    129129                                $zip_size                   = size_format( filesize( get_attached_file( $zip_file->ID ) ), 1 );
    130130                                $zip_preview                = Template::preview_link_zip( $slug, $zip_file->ID );
     131                                $zip_pcp                    = Template::preview_link_zip( $slug, $zip_file->ID, 'pcp' );
    131132
    132133                                printf(
    133                                         '<li>%1$s <a href="%2$s">%3$s</a> (%4$s) (<a href="%5$s" target="_blank">preview</a>)</li>',
     134                                        '<li>%1$s <a href="%2$s">%3$s</a> (%4$s) (<a href="%5$s" target="_blank">preview</a> | <a href="%6$s" target="_blank">pcp</a>)</li>',
    134135                                        esc_html( $zip_date ),
    135136                                        esc_url( $zip_url ),
    136137                                        esc_html( basename( $zip_url ) ),
    137138                                        esc_html( $zip_size ),
    138                                         esc_url( $zip_preview )
     139                                        esc_url( $zip_preview ),
     140                                        esc_url( $zip_pcp )
    139141                                );
    140142                        }
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-blueprint.php

    r13076 r13088  
    3737                $plugin = Plugin_Directory::get_plugin_post( $request['plugin_slug'] );
    3838
    39                 // Direct zip preview for plugin reviewers
    4039                if ( $request->get_param('zip_hash') ) {
    41                         foreach ( get_attached_media( 'application/zip', $plugin ) as $zip_file ) {
    42                                 if ( hash_equals( Template::preview_link_hash( $zip_file->ID, 0 ), $request->get_param('zip_hash') ) ||
    43                                      hash_equals( Template::preview_link_hash( $zip_file->ID, -1 ), $request->get_param('zip_hash') ) ) {
    44                                         $zip_url = wp_get_attachment_url( $zip_file->ID );
    45                                         $zip_blueprint =<<<EOF
    46 {
    47     "landingPage": "/wp-admin/plugins.php",
    48     "preferredVersions": {
    49         "php": "8.0",
    50         "wp": "latest"
    51         },
    52     "phpExtensionBundles": [
    53         "kitchen-sink"
    54     ],
    55     "features": {
    56         "networking": true
    57     },
    58     "steps": [
    59                 {
    60             "step": "installPlugin",
    61             "pluginZipFile": {
    62                 "resource": "wordpress.org/plugins",
    63                 "slug": "plugin-check"
    64             }
    65         },
    66         {
    67             "step": "installPlugin",
    68             "pluginZipFile": {
    69                 "resource": "url",
    70                 "url": "$zip_url"
    71             }
    72                 },
    73                 {
    74             "step": "login",
    75             "username": "admin",
    76             "password": "password"
    77         }
    78         ]
    79 }
    80 EOF;
    81                                         header( 'Access-Control-Allow-Origin: https://playground.wordpress.net' );
    82                                         die( $zip_blueprint );
    83                                 }
    84                         }
     40                        $this->reviewer_blueprint( $request, $plugin );
    8541                }
    8642
     
    10258        }
    10359
     60        function reviewer_blueprint( $request, $plugin ) {
     61                // Direct zip preview for plugin reviewers
     62                if ( $request->get_param('zip_hash') ) {
     63                        foreach ( get_attached_media( 'application/zip', $plugin ) as $zip_file ) {
     64                                if ( hash_equals( Template::preview_link_hash( $zip_file->ID, 0 ), $request->get_param('zip_hash') ) ||
     65                                     hash_equals( Template::preview_link_hash( $zip_file->ID, -1 ), $request->get_param('zip_hash') ) ) {
     66                                        $zip_url = wp_get_attachment_url( $zip_file->ID );
     67                                        if ( $zip_url ) {
     68
     69                                                $landing_page = '/wp-admin/plugins.php';
     70                                                $activate_plugin = true;
     71
     72                                                // Plugin deactivated, and land on the Plugin Check page
     73                                                if ( 'pcp' === $request->get_param('type') ) {
     74                                                        $landing_page = '/wp-admin/admin.php?page=plugin-check';
     75                                                        $activate_plugin = false;
     76                                                }
     77
     78                                                $zip_blueprint = (object)[
     79                                                        'landingPage' => $landing_page,
     80                                                        'preferredVersions' => (object)[
     81                                                                'php' => '8.0',
     82                                                                'wp'  => 'latest',
     83                                                        ],
     84                                                        'phpExtensionBundles' => [
     85                                                                'kitchen-sink'
     86                                                        ],
     87                                                        'features' => (object)[
     88                                                                'networking' => true
     89                                                        ],
     90                                                        'steps' => [
     91                                                                (object)[
     92                                                                        'step' => 'installPlugin',
     93                                                                        'pluginZipFile' => [
     94                                                                                'resource' => 'wordpress.org/plugins',
     95                                                                                'slug'     => 'plugin-check',
     96                                                                        ]
     97                                                                ],
     98                                                                (object)[
     99                                                                        'step' => 'installPlugin',
     100                                                                        'pluginZipFile' => (object)[
     101                                                                                'resource' => 'url',
     102                                                                                'url'      => $zip_url,
     103                                                                        ],
     104                                                                        'options' => (object)[
     105                                                                                'activate' => (bool)$activate_plugin
     106                                                                        ]
     107                                                                ],
     108                                                                (object)[
     109                                                                        'step' => 'login',
     110                                                                        'username' => 'admin',
     111                                                                        'password' => 'password',
     112                                                                ]
     113                                                        ]
     114                                                ];
     115
     116                                                $output = json_encode( $zip_blueprint );
     117
     118                                                if ( $output ) {
     119                                                        header( 'Access-Control-Allow-Origin: https://playground.wordpress.net' );
     120                                                        die( $output );
     121                                                }
     122                                        }
     123                                }
     124                        }
     125                }
     126
     127                return new \WP_Error( 'invalid_blueprint', 'Invalid file', array( 'status' => 500 ) );
     128
     129        }
     130
    104131}
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php

    r13076 r13088  
    772772         * @return false|string           The preview URL.
    773773         */
    774         public static function preview_link_zip( $slug, $attachment_id ) {
     774        public static function preview_link_zip( $slug, $attachment_id, $type = null ) {
    775775
    776776                $zip_hash = self::preview_link_hash( $attachment_id );
     
    779779                }
    780780                $zip_blueprint = sprintf( 'https://wordpress.org/plugins/wp-json/plugins/v1/plugin/%s/blueprint.json?zip_hash=%s', esc_attr( $slug ), esc_attr( $zip_hash ) );
     781                if ( is_string( $type ) ) {
     782                        $zip_blueprint = add_query_arg( 'type', strval( $type ), $zip_blueprint );
     783                }
    781784                $zip_preview = add_query_arg( 'blueprint-url', urlencode($zip_blueprint), 'https://playground.wordpress.net/' );
    782785
Note: See TracChangeset for help on using the changeset viewer.