Make WordPress Core

Ticket #26695: 26695.diff

File 26695.diff, 5.1 KB (added by matveb, 11 years ago)
  • wp-includes/class-wp-theme.php

     
    904904        }
    905905
    906906        /**
     907         * Returns an array with all the theme's screenshots, checking for files
     908         * in the form of 'screenshot-n' at the root of a theme directory.
     909         *
     910         * Maximum allowed is five screenshots total.
     911         *
     912         * @todo Hardcoded to pngs -- support jpg, etc.
     913         * @todo Set up caching.
     914         *
     915         * @see WP_Theme::get_screenshot()
     916         *
     917         * @param a theme object
     918         * @return array Screenshots. First element is default screenshot.
     919         */
     920        public function get_multiple_screenshots() {
     921                $base = $this->get_stylesheet_directory_uri();
     922                $set = array( 2, 3, 4, 5 );
     923
     924                // Return early if there is no main screenshot
     925                if ( $this->get_screenshot() ) {
     926                        return false;
     927                }
     928
     929                // Screenshots array starts with default screenshot at position [0]
     930                $screenshots = array( $this->get_screenshot() );
     931
     932                // Check how many other screenshots a theme has
     933                foreach ( $set as $number ) {
     934                        // Hard-coding file path for pngs...
     935                        $file = '/screenshot-' . $number . '.png';
     936                        $path = $this->template_dir . $file;
     937
     938                        if ( ! file_exists( $path ) )
     939                                continue;
     940
     941                        $screenshots[] = $base . $file;
     942                }
     943
     944                return $screenshots;
     945        }
     946
     947        /**
    907948         * Return files in the theme's directory.
    908949         *
    909950         * @since 3.4.0
  • wp-admin/includes/theme.php

     
    411411                $prepared_themes[ $slug ] = array(
    412412                        'id'           => $slug,
    413413                        'name'         => $theme->display( 'Name' ),
    414                         'screenshot'   => array( $theme->get_screenshot() ), // @todo multiple
     414                        'screenshot'   => $theme->get_multiple_screenshots(),
    415415                        'description'  => $theme->display( 'Description' ),
    416416                        'author'       => $theme->display( 'Author', false, true ),
    417417                        'authorAndUri' => $theme->display( 'Author' ),
  • wp-admin/js/theme.js

     
    363363                if ( image.width && image.width <= 300 ) {
    364364                        el.addClass( 'small-screenshot' );
    365365                }
     366        },
     367
     368        // Setups an image gallery using the theme screenshots supplied by a theme
     369        screenshotGallery: function() {
     370                var el, img,
     371                        screenshots = $( '.theme-screenshots' );
     372
     373                // Select the first item
     374                screenshots.find( '.thumb' ).first().addClass( 'selected' );
     375
     376                // Clicking on a screenshot thumbnail drops it
     377                // at the top of the stack in a larger size
     378                screenshots.on( 'click', 'div.thumb', function() {
     379                        el = $( this );
     380                        img = $( this ).find( 'img' ).attr( 'src' );
     381
     382                        // Change src attribute of first image
     383                        screenshots.find( '.screenshot' ).first().find( 'img' ).attr( 'src', img );
     384                        // Mark the new image as 'selected'
     385                        el.siblings( '.selected' ).removeClass( 'selected' );
     386                        el.addClass( 'selected' );
     387                });
    366388        }
    367389});
    368390
     
    538560
    539561                this.overlay.render();
    540562                this.$overlay.html( this.overlay.el );
     563                this.overlay.screenshotGallery();
    541564
    542565                // Bind to theme:next and theme:previous
    543566                // triggered by the arrow keys
  • wp-admin/css/wp-admin.css

     
    68776877        margin: 0 30px 0 0;
    68786878        width: 55%;
    68796879        max-width: 880px;
    6880         text-align: center;
    68816880}
    68826881
    68836882/* First screenshot, shown big */
     
    69186917/* Other screenshots, shown small and square */
    69196918.theme-overlay .screenshot.thumb {
    69206919        background: #ccc;
    6921         border: 1px solid #eee;
     6920        border: 2px solid #fff;
    69226921        float: none;
    69236922        display: inline-block;
    6924         margin: 10px 5px 0;
    6925         width: 140px;
    6926         height: 80px;
     6923        margin: 10px 5px 0 0;
     6924        width: 80px;
    69276925        cursor: pointer;
     6926        padding: 3px;
    69286927}
    69296928
    69306929.theme-overlay .screenshot.thumb:after {
     
    69356934
    69366935.theme-overlay .screenshot.thumb img {
    69376936        cursor: pointer;
     6937        width: 300px;
    69386938        height: auto;
    69396939        position: absolute;
    6940         left: 0;
    6941         top: 0;
    6942         width: 100%;
    6943         height: auto;
     6940                left: 0;
     6941                top: 0;
     6942        box-sizing: border-box;
    69446943}
    69456944
    69466945.theme-overlay .screenshot.selected {
    6947         background: transparent;
    6948         border: 2px solid #2ea2cc;
     6946        background: #0074a2;
     6947        border-color: #0074a2;
     6948        box-shadow: none;
    69496949}
    69506950
    69516951.theme-overlay .screenshot.selected img {
    6952         opacity: 0.8;
     6952        opacity: 0.6;
    69536953}
    69546954
    69556955/* No screenshot placeholder */
  • wp-admin/themes.php

     
    317317                        <div class="theme-screenshots">
    318318                        <# if ( data.screenshot[0] ) { #>
    319319                                <div class="screenshot"><img src="{{ data.screenshot[0] }}" alt="" /></div>
     320                                <#
     321                                        if ( _.size( data.screenshot ) > 1 ) {
     322                                                _.each ( data.screenshot, function( image ) {
     323                                #>
     324                                        <div class="screenshot thumb"><img src="{{ image }}" alt="" /></div>
     325                                <#
     326                                                });
     327                                        }
     328                                #>
    320329                        <# } else { #>
    321330                                <div class="screenshot blank"></div>
    322331                        <# } #>