Changeset 1034
- Timestamp:
- 12/11/2014 07:39:05 PM (10 years ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/content-single.php
r1021 r1034 13 13 <?php endif; ?> 14 14 15 <div class="theme-info hentry"> 16 <h3 class="theme-name entry-title"><?php the_title(); ?></h3> 17 <span class="theme-version"> 15 <div class="theme-screenshots"> 16 <div class="screenshot"><?php the_post_thumbnail(); ?></div> 17 18 <div class="theme-actions"> 19 <a href="<?php echo esc_url( '//downloads.wordpress.org/theme/' . $theme->slug . '.' . $theme->version . '.zip' ); ?>" class="button button-primary"><?php _e( 'Download' ); ?></a> 20 <a href="<?php echo esc_url( $theme->preview_url ); ?>" class="button button-secondary"><?php _e( 'Preview' ); ?></a> 21 </div> 22 </div><!-- .theme-screenshots --> 23 24 <div class="theme-info"> 25 <div class="hentry"> 26 <h3 class="theme-name entry-title"><?php the_title(); ?></h3> 27 <span class="theme-version"> 28 <?php 29 printf( __( 'Version: %s' ), 30 sprintf( '<abbr title="%1$s">%2$s</abbr>', 31 esc_attr( sprintf( __( 'Last updated: %s' ), date_i18n( get_option( 'date_format' ), strtotime( $theme->last_updated ) ) ) ), 32 $theme->version 33 ) 34 ); 35 ?> 36 </span> 37 <h4 class="theme-author"><?php printf( __( 'By %s' ), '<span class="author">' . $theme->author . '</span>' ); ?></h4> 38 39 <div class="theme-description entry-summary"><?php the_content(); ?></div> 40 41 <?php if ( ! empty( $theme->parent ) ) : ?> 42 <div class="theme-notice notice notice-info"> 43 <p class="parent-theme"><?php printf( __( 'This is a child theme of %s.' ), sprintf( '<a href="/%1$s">%2$s</a>', $theme->parent->slug, $theme->parent->name ) ); ?></p> 44 </div> 45 <?php endif; ?> 46 </div><!-- .theme-info --> 47 48 <div class="theme-ratings" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> 49 <meta itemprop="ratingValue" content="<?php echo esc_attr( number_format_i18n( $theme->rating / 20, 1 ) ); ?>"/> 50 <meta itemprop="ratingCount" content="<?php echo esc_attr( $theme->num_ratings ); ?>"/> 51 <h4><?php _e( 'Ratings', 'wporg-themes' ); ?></h4> 52 53 <div class="star-holder"> 54 <div class="star-rating" style="width: <?php echo esc_attr( number_format_i18n( $theme->rating, 1 ) ); ?>%"> 55 <?php printf( __( '%d stars', 'wporg-themes' ), number_format_i18n( $theme->rating / 20 ) ); ?> 56 </div> 57 </div> 58 <span><?php printf( __( '%s out of 5 stars.', 'wporg-themes' ), number_format_i18n( $theme->rating / 20, 1 ) ); ?></span> 59 18 60 <?php 19 printf( __( 'Version: %s' ), 20 sprintf( '<abbr title="%1$s">%2$s</abbr>', 21 esc_attr( sprintf( __( 'Last updated: %s' ), date_i18n( get_option( 'date_format' ), strtotime( $theme->last_updated ) ) ) ), 22 $theme->version 23 ) 24 ); 61 if ( $theme->lvl_ratings ) : 62 foreach ( $theme->lvl_ratings as $key => $rate_count ) : 25 63 ?> 26 </span> 27 <h4 class="theme-author"><?php printf( __( 'By %s' ), '<span class="author">' . $theme->author . '</span>' ); ?></h4> 64 <div class="counter-container"> 65 <a href="//wordpress.org/support/view/theme-reviews/<?php echo esc_attr( $theme->slug ); ?>?filter=<?php echo $key; ?>" title="<?php printf( _n( 'Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $key, 'wporg-themes' ), $key ); ?>"> 66 <span class="counter-label"><?php printf( __( '%d stars', 'wporg-themes' ), $key ); ?></span> 67 <span class="counter-back"> 68 <span class="counter-bar" style="width: <?php echo 92 * ( $rate_count / $theme->num_ratings ); ?>px;"></span> 69 </span> 70 </a> 71 <span class="counter-count"><?php echo $rate_count; ?></span> 72 </div> 73 <?php 74 endforeach; 75 endif; 76 ?> 77 </div><!-- .theme-rating --> 28 78 29 <div class="theme-description entry-summary"><?php the_content(); ?></div> 79 <div class="theme-devs"> 80 <h4><?php _e( 'Development', 'wporg-themes' ); ?></h4> 81 <h5><?php _e( 'Subscribe', 'wporg-themes' ); ?></h5> 82 <ul class="unmarked-list"> 83 <li> 84 <a href="//themes.trac.wordpress.org/log/<?php echo esc_attr( $theme->slug ); ?>?limit=100&mode=stop_on_copy&format=rss"> 85 <img src="//s.w.org/style/images/feedicon.png" style="vertical-align:text-top;"/> 86 <?php _e( 'Development Log', 'wporg' ); ?> 87 </a> 88 </li> 89 </ul> 30 90 31 <?php if ( ! empty( $theme->template ) ) : ?> 32 <div class="theme-notice notice notice-info"> 33 <p class="parent-theme"><?php printf( __( 'This is a child theme of %s.' ), sprintf( '<a href="/%1$s">%2$s</a>', $theme->template, $theme->template ) ); ?></p> 34 </div> 35 <?php endif; ?> 91 <h5><?php _e( 'Browse the Code', 'wporg-themes' ); ?></h5> 92 <ul class="unmarked-list"> 93 <li><a href="//themes.trac.wordpress.org/log/<?php echo esc_attr( $theme->slug ); ?>/" rel="nofollow"><?php _e( 'Development Log', 'wporg-themes' ); ?></a></li> 94 <li><a href="//themes.svn.wordpress.org/<?php echo esc_attr( $theme->slug ); ?>/" rel="nofollow"><?php _e( 'Subversion Repository', 'wporg-themes' ); ?></a></li> 95 <li><a href="//themes.trac.wordpress.org/browser/<?php echo esc_attr( $theme->slug ); ?>/" rel="nofollow"><?php _e( 'Browse in Trac', 'wporg-themes' ); ?></a></li> 96 </ul> 97 </div><!-- .theme-devs --> 36 98 37 <p class="theme-tags"> 38 <span><?php _e( 'Tags:' ); ?></span> 99 <div class="theme-downloads"> 100 <h4><?php _e( 'Downloads', 'wporg-themes' ); ?></h4> 101 102 <div id="theme-download-stats-<?php echo esc_attr( $theme->slug ); ?>" class="chart"></div> 103 <script type="text/javascript"> 104 google.load("visualization", "1", {packages:["corechart"]}); 105 google.setOnLoadCallback(drawThemeDownloadsChart); 106 107 function drawThemeDownloadsChart() { 108 jQuery(document).ready(function($){ 109 jQuery.getJSON('https://api.wordpress.org/stats/themes/1.0/downloads.php?slug=<?php echo $theme->slug; ?>&limit=267&callback=?', function (downloads) { 110 var data = new google.visualization.DataTable(), 111 count = 0, 112 sml; 113 114 data.addColumn('string', _wpThemeSettings.l10n.date); 115 data.addColumn('number', _wpThemeSettings.l10n.downloads); 116 117 $.each(downloads, function (key, value) { 118 data.addRow(); 119 data.setValue(count, 0, new Date(key).toLocaleDateString() ); 120 data.setValue(count, 1, Number(value)); 121 count++; 122 }); 123 124 sml = data.getNumberOfRows() < 225; 125 126 new google.visualization.ColumnChart(document.getElementById('theme-download-stats-<?php echo esc_attr( $theme->slug ); ?>')).draw(data, { 127 colors: ['#253578'], 128 legend: { 129 position: 'none' 130 }, 131 titlePosition: 'in', 132 axisTitlesPosition: 'in', 133 chartArea: { 134 height: 280, 135 left: sml ? 30 : 0, 136 width: sml ? '80%' : '100%' 137 }, 138 hAxis: { 139 textStyle: {color: 'black', fontSize: 9} 140 }, 141 vAxis: { 142 format: '###,###', 143 textPosition: sml ? 'out' : 'in', 144 viewWindowMode: 'explicit', 145 viewWindow: {min: 0} 146 }, 147 bar: { 148 groupWidth: ( data.getNumberOfRows() > 100 ) ? "100%" : null 149 }, 150 height: 350 151 }); 152 }); 153 }); 154 } 155 </script> 156 <p class="total-downloads"><?php printf( __( 'Total downloads: %s' ), '<strong>' . number_format_i18n( $theme->downloaded ) . '</strong>' ); ?></p> 157 </div><!-- .theme-downloads --> 158 159 <div class="theme-tags"> 160 <h4><?php _e( 'Tags:' ); ?></h4> 39 161 <?php 40 162 foreach( $theme->tags as &$tag ) : 41 $tag = sprintf( '<a href="/tag s/%1$s">%1$s</a>', $tag );163 $tag = sprintf( '<a href="/tag/%1$s/">%1$s</a>', $tag ); 42 164 endforeach; 43 165 echo implode( ', ', $theme->tags ); 44 166 ?> 45 </p> 46 </div><!-- .theme-info --> 47 48 <div class="theme-screenshots"> 49 <div class="screenshot"><?php the_post_thumbnail(); ?></div> 50 </div><!-- .theme-screenshots --> 51 52 <div class="theme-ratings" itemprop="aggregateRating" itemscope 53 itemtype="http://schema.org/AggregateRating"> 54 <meta itemprop="ratingValue" content="<?php echo esc_attr( number_format_i18n( $theme->rating / 20, 1 ) ); ?>"/> 55 <meta itemprop="ratingCount" content="<?php echo esc_attr( $theme->num_ratings ); ?>"/> 56 <h4><?php _e( 'Ratings', 'wporg-themes' ); ?></h4> 57 58 <div class="star-holder"> 59 <div class="star-rating" style="width: <?php echo esc_attr( number_format_i18n( $theme->rating, 1 ) ); ?>%"> 60 <?php printf( __( '%d stars', 'wporg-themes' ), number_format_i18n( $theme->rating / 20 ) ); ?> 61 </div> 62 </div> 63 <span><?php printf( __( '%s out of 5 stars.', 'wporg-themes' ), number_format_i18n( $theme->rating / 20, 1 ) ); ?></span> 64 <?php 65 $ratingcount = array(); // TODO: Rating counts 66 foreach ( range( 1, 5 ) as $val ) { 67 if ( empty( $ratingcount[ $val ] ) ) { 68 $ratingcount[ $val ] = 0; 69 } 70 } 71 krsort( $ratingcount ); 72 foreach ( $ratingcount as $key => $ratecount ) : 73 ?> 74 <div class="counter-container"> 75 <a href="//wordpress.org/support/view/theme-reviews/<?php echo esc_attr( $theme->slug ); ?>?filter=<?php echo $key; ?>" 76 title="<?php printf( _n( 'Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $key, 'wporg-themes' ), $key ); ?>"> 77 <span class="counter-label" style="float:left; margin-right:5px;"><?php printf( __( '%d stars', 'wporg-themes' ), $key ); ?></span> 78 <span class="counter-back" style="height:17px;width:92px;background-color:#ececec;float:left;"> 79 <span class="counter-bar" style="width: <?php echo 92 * ( $ratecount / count( 1 ) ); ?>px;height:17px;background-color:#fddb5a;float:left;"></span> 80 </span> 81 </a> 82 <span class="counter-count" style="margin-left:5px;"><?php echo $ratecount; ?></span> 83 </div> 84 <?php endforeach; ?> 85 </div><!-- .theme-rating --> 86 87 <div class="theme-devs"> 88 <h4><?php _e( 'Developers', 'wporg-themes' ); ?></h4> 89 <h5><?php _e( 'Subscribe', 'wporg-themes' ); ?></h5> 90 <ul class="unmarked-list"> 91 <li> 92 <a href="//themes.trac.wordpress.org/log/<?php echo esc_attr( $theme->slug ); ?>?limit=100&mode=stop_on_copy&format=rss"> 93 <img src="//s.w.org/style/images/feedicon.png" style="vertical-align:text-top;"/> 94 <?php _e( 'Development Log', 'wporg' ); ?> 95 </a> 96 </li> 97 </ul> 98 99 <h5><?php _e( 'Browse the Code', 'wporg-themes' ); ?></h5> 100 <ul class="unmarked-list"> 101 <li><a href="//themes.trac.wordpress.org/log/<?php echo esc_attr( $theme->slug ); ?>/" rel="nofollow"><?php _e( 'Development Log', 'wporg-themes' ); ?></a></li> 102 <li><a href="//themes.svn.wordpress.org/<?php echo esc_attr( $theme->slug ); ?>/" rel="nofollow"><?php _e( 'Subversion Repository', 'wporg-themes' ); ?></a></li> 103 <li><a href="//themes.trac.wordpress.org/browser/<?php echo esc_attr( $theme->slug ); ?>/" rel="nofollow"><?php _e( 'Browse in Trac', 'wporg-themes' ); ?></a></li> 104 </ul> 105 </div><!-- .theme-devs --> 106 107 <div class="theme-downloads"> 108 <h4><?php _e( 'Downloads Per Day' ); ?></h4> 109 110 <div id="theme-download-stats-<?php echo esc_attr( $theme->slug ); ?>" class="chart"></div> 111 <script type="text/javascript"> 112 google.load("visualization", "1", {packages:["corechart"]}); 113 google.setOnLoadCallback(drawThemeDownloadsChart); 114 115 function drawThemeDownloadsChart() { 116 jQuery(document).ready(function($){ 117 jQuery.getJSON('https://api.wordpress.org/stats/themes/1.0/downloads.php?slug=<?php echo $theme->slug; ?>&limit=267&callback=?', function (downloads) { 118 var data = new google.visualization.DataTable(), 119 count = 0, 120 sml; 121 122 data.addColumn('string', _wpThemeSettings.l10n.date); 123 data.addColumn('number', _wpThemeSettings.l10n.downloads); 124 125 $.each(downloads, function (key, value) { 126 data.addRow(); 127 data.setValue(count, 0, new Date(key).toLocaleDateString() ); 128 data.setValue(count, 1, Number(value)); 129 count++; 130 }); 131 132 sml = data.getNumberOfRows() < 225; 133 134 new google.visualization.ColumnChart(document.getElementById('theme-download-stats-<?php echo esc_attr( $theme->slug ); ?>')).draw(data, { 135 colors: ['#253578'], 136 legend: { 137 position: 'none' 138 }, 139 titlePosition: 'in', 140 axisTitlesPosition: 'in', 141 chartArea: { 142 height: 280, 143 left: sml ? 30 : 0, 144 width: sml ? '80%' : '100%' 145 }, 146 hAxis: { 147 textStyle: {color: 'black', fontSize: 9} 148 }, 149 vAxis: { 150 format: '###,###', 151 textPosition: sml ? 'out' : 'in', 152 viewWindowMode: 'explicit', 153 viewWindow: {min: 0} 154 }, 155 bar: { 156 groupWidth: ( data.getNumberOfRows() > 100 ) ? "100%" : null 157 }, 158 height: 350 159 }); 160 }); 161 }); 162 } 163 </script> 164 </div><!-- .theme-downloads --> 165 166 </div> 167 168 <div class="theme-actions"> 169 <a href="<?php echo esc_url( '//downloads.wordpress.org/theme/' . $theme->slug . '.' . $theme->version . '.zip' ); ?>" class="button button-primary"><?php _e( 'Download' ); ?></a> 170 <a href="<?php echo esc_url( $theme->preview_url ); ?>" class="button button-secondary"><?php _e( 'Preview' ); ?></a> 167 </div><!-- .theme-tags --> 168 </div> 171 169 </div> 172 170 </div> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/functions.php
r1021 r1034 1 1 <?php 2 2 3 /** 3 4 * WP.org Themes' functions and definitions. … … 15 16 16 17 function wporg_themes_setup() { 18 global $themes_allowedtags, $theme_field_defaults; 19 17 20 // load_theme_textdomain( 'wporg-themes', get_template_directory() . '/languages' ); 18 21 add_theme_support( 'automatic-feed-links' ); … … 22 25 'primary' => __( 'Primary Menu', 'wporg-themes' ), 23 26 ) ); 24 27 25 28 add_theme_support( 'html5', array( 26 29 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' 27 30 ) ); 31 32 $themes_allowedtags = array( 33 'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ), 34 'abbr' => array( 'title' => array() ), 35 'acronym' => array( 'title' => array() ), 36 'code' => array(), 37 'pre' => array(), 38 'em' => array(), 39 'strong' => array(), 40 'div' => array(), 41 'p' => array(), 42 'ul' => array(), 43 'ol' => array(), 44 'li' => array(), 45 'h1' => array(), 46 'h2' => array(), 47 'h3' => array(), 48 'h4' => array(), 49 'h5' => array(), 50 'h6' => array(), 51 'img' => array( 'src' => array(), 'class' => array(), 'alt' => array() ), 52 ); 53 54 $theme_field_defaults = array( 55 'description' => true, 56 'sections' => false, 57 'tested' => true, 58 'requires' => true, 59 'rating' => true, 60 'downloaded' => true, 61 'downloadlink' => true, 62 'last_updated' => true, 63 'homepage' => true, 64 'tags' => true, 65 'num_ratings' => true, 66 ); 28 67 } 29 68 add_action( 'after_setup_theme', 'wporg_themes_setup' ); … … 47 86 'themes' => false, 48 87 'settings' => array( 88 'isMobile' => wp_is_mobile(), 49 89 'isInstall' => true, 50 90 'canInstall' => false, … … 70 110 71 111 /** 112 * @param object $args 113 * @param string $action 114 * 115 * @return array 116 */ 117 function wporg_themes_api_args( $args, $action ) { 118 if ( 'query_themes' == $action ) { 119 $args->per_page = 30; 120 $args->fields['parent'] = true; 121 $args->fields['tags'] = true; 122 } 123 124 return $args; 125 } 126 add_filter( 'themes_api_args', 'wporg_themes_api_args', 10, 2 ); 127 128 /** 72 129 * Removes Core's built-in query-themes handler, so we can safely add ours later on. 73 130 */ … … 113 170 add_action( 'wp_ajax_nopriv_query-themes', 'wporg_themes_query_themes' ); 114 171 172 function wporg_themes_theme_info() { 173 global $themes_allowedtags; 174 175 $args = wp_unslash( $_REQUEST ); 176 $theme = themes_api( 'theme_information', array( 'slug' => $args['slug'] ) ); 177 178 if ( is_wp_error( $theme ) ) { 179 wp_send_json_error(); 180 } 181 182 $theme->name = wp_kses( $theme->name, $themes_allowedtags ); 183 $theme->author = wp_kses( $theme->author, $themes_allowedtags ); 184 $theme->version = wp_kses( $theme->version, $themes_allowedtags ); 185 $theme->description = wp_kses( $theme->description, $themes_allowedtags ); 186 $theme->num_ratings = number_format_i18n( $theme->num_ratings ); 187 $theme->preview_url = set_url_scheme( $theme->preview_url ); 188 189 wp_send_json_success( $theme ); 190 } 191 add_action( 'wp_ajax_theme-info', 'wporg_themes_theme_info' ); 192 add_action( 'wp_ajax_nopriv_theme-info', 'wporg_themes_theme_info' ); 193 115 194 /** 116 195 * Include view templates in the footer. -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/index.php
r1021 r1034 13 13 14 14 include ABSPATH . 'wp-admin/includes/theme.php'; 15 $themes = themes_api( 'query_themes', array( 15 16 $args = array( 16 17 'per_page' => 15, 17 'browse' => get_query_var( 'attachment' ) ? get_query_var( 'attachment' ) : 'featured', 18 'fields' => 'tags', 19 ) ); 18 'fields' => array_merge( $GLOBALS['theme_field_defaults'], array( 19 'parent' => true, 20 ) ), 21 ); 22 23 if ( get_query_var( 'tag' ) ) { 24 $args['tag'][] = get_query_var( 'tag' ); 25 } else { 26 $args['browse'] = get_query_var( 'attachment' ) ? get_query_var( 'attachment' ) : 'featured'; 27 } 28 $themes = themes_api( 'query_themes', $args ); 20 29 21 30 get_header(); 22 31 ?> 23 32 24 <div id="themes" class="wrap"> 25 <div class="wp-filter"> 26 <div class="filter-count"> 27 <span class="count theme-count"><?php echo count( $themes->themes ); ?></span> 28 </div> 29 30 <ul class="filter-links"> 31 <li><a href="#" data-sort="featured"><?php _ex( 'Featured', 'themes' ); ?></a></li> 32 <li><a href="#" data-sort="popular"><?php _ex( 'Popular', 'themes' ); ?></a></li> 33 <li><a href="#" data-sort="new"><?php _ex( 'Latest', 'themes' ); ?></a></li> 34 </ul> 35 36 <a class="drawer-toggle" href="#"><?php _e( 'Feature Filter' ); ?></a> 37 38 <div class="search-form"></div> 39 40 <div class="filter-drawer"> 41 <div class="buttons"> 42 <a class="apply-filters button button-secondary" href="#"><?php _e( 'Apply Filters' ); ?><span></span></a> 43 <a class="clear-filters button button-secondary" href="#"><?php _e( 'Clear' ); ?></a> 33 <div id="themes" class="wrap"> 34 <div class="wp-filter"> 35 <div class="filter-count"> 36 <span class="count theme-count"><?php echo count( $themes->themes ); ?></span> 44 37 </div> 45 38 46 <?php foreach ( get_theme_feature_list() as $feature_name => $features ) : ?> 47 <div class="filter-group"> 48 <h4><?php echo esc_html( $feature_name ); ?></h4> 49 <ol class="feature-group"> 50 <?php foreach ( $features as $feature => $feature_name ) : ?> 51 <li> 52 <input type="checkbox" id="filter-id-<?php echo esc_attr( $feature ); ?>" value="<?php echo esc_attr( $feature ); ?>" /> 53 <label for="filter-id-<?php echo esc_attr( $feature ); ?>"><?php echo esc_html( $feature_name ); ?></label> 54 </li> 55 <?php endforeach; ?> 56 </ol> 39 <ul class="filter-links"> 40 <li><a href="/browse/featured/" data-sort="featured"><?php _ex( 'Featured', 'themes' ); ?></a></li> 41 <li><a href="/browse/popular/" data-sort="popular"><?php _ex( 'Popular', 'themes' ); ?></a></li> 42 <li><a href="/browse/new/" data-sort="new"><?php _ex( 'Latest', 'themes' ); ?></a></li> 43 </ul> 44 45 <a class="drawer-toggle" href="#"><?php _e( 'Feature Filter' ); ?></a> 46 47 <div class="search-form"></div> 48 49 <div class="filter-drawer"> 50 <div class="buttons"> 51 <a class="apply-filters button button-secondary" href="#"><?php _e( 'Apply Filters' ); ?><span></span></a> 52 <a class="clear-filters button button-secondary" href="#"><?php _e( 'Clear' ); ?></a> 53 </div> 54 55 <div class="filtered-by"> 56 <span><?php _e( 'Filtering by:' ); ?></span> 57 <div class="tags"></div> 58 <a href="#"><?php _e( 'Edit' ); ?></a> 59 </div> 60 61 <?php foreach( get_theme_feature_list() as $feature_name => $features ) : ?> 62 <div class="filter-group"> 63 <h4><?php echo esc_html( $feature_name ); ?></h4> 64 <ol class="feature-group"> 65 <?php foreach ( $features as $feature => $feature_name ) : ?> 66 <li> 67 <input type="checkbox" id="filter-id-<?php echo esc_attr( $feature ); ?>" value="<?php echo esc_attr( $feature ); ?>" /> 68 <label for="filter-id-<?php echo esc_attr( $feature ); ?>"><?php echo esc_html( $feature_name ); ?></label> 69 </li> 70 <?php endforeach; ?> 71 </ol> 72 </div> 73 <?php endforeach; ?> 57 74 </div> 58 <?php endforeach; ?>75 </div><!-- .wp-filter --> 59 76 60 <div class="filtered-by"> 61 <span><?php _e( 'Filtering by:' ); ?></span> 62 <div class="tags"></div> 63 <a href="#"><?php _e( 'Edit' ); ?></a> 64 </div> 65 </div> 66 </div><!-- .wp-filter --> 67 68 <div class="theme-browser content-filterable"> 69 <div class="themes"> 70 <?php 77 <div class="theme-browser content-filterable"> 78 <div class="themes"> 79 <?php 71 80 if ( ! is_wp_error( $themes ) ) : 72 81 foreach ( $themes->themes as $theme ) : … … 74 83 endforeach; 75 84 endif; 76 ?> 85 ?> 86 </div> 77 87 </div> 88 <div class="theme-install-overlay"></div> 89 <div class="theme-overlay"></div> 90 91 <p class="no-themes"><?php _e( 'No themes found. Try a different search.' ); ?></p> 92 <span class="spinner"></span> 78 93 </div> 79 <div class="theme-install-overlay"></div>80 <div class="theme-overlay"></div>81 82 <p class="no-themes"><?php _e( 'No themes found. Try a different search.' ); ?></p>83 <span class="spinner"></span>84 </div>85 94 86 95 <?php -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/js/theme.js
r1021 r1034 39 39 40 40 // If last updated plus 2 years is in the past, it's outdated. 41 data.is_outdated = updated.setYear(updated.getYear() + 1902).valueOf() > new Date().valueOf(); 41 data.is_outdated = updated.setYear(updated.getYear() + 1902).valueOf() < new Date().valueOf(); 42 43 // Make tags clickable and seprated by a comma. 44 data.tags = _.map( data.tags, function( tag ) { 45 return '<a href="/tag/'+tag+'/">'+tag+'</a>'; 46 }).join( ', ' ); 42 47 43 48 this.$el.html( this.html( data ) ); … … 100 105 } 101 106 102 preview.$el.addClass( 'wp-full-overlay expanded' ); 107 if ( wp.themes.data.settings.isMobile ) { 108 preview.$el.addClass( 'wp-full-overlay collapsed' ); 109 } else { 110 preview.$el.addClass( 'wp-full-overlay expanded' ); 111 } 103 112 104 113 // Append preview … … 240 249 }); 241 250 251 _.extend( wp.themes.view.Preview.prototype, { 252 253 close: function() { 254 this.$el.fadeOut( 200, function() { 255 $( 'body' ).removeClass( 'theme-installer-active full-overlay-active' ); 256 257 // Return focus to the theme div 258 if ( wp.themes.focusedTheme ) { 259 wp.themes.focusedTheme.focus(); 260 } 261 }); 262 263 this.trigger( 'preview:close' ); 264 this.undelegateEvents(); 265 this.unbind(); 266 return false; 267 }, 268 269 keyEvent: function() { 270 // The escape key closes the preview 271 if ( event.keyCode === 27 ) { 272 this.undelegateEvents(); 273 this.close(); 274 } 275 // The right arrow key, next theme 276 if ( event.keyCode === 39 ) { 277 _.once( this.nextTheme() ); 278 } 279 280 // The left arrow key, previous theme 281 if ( event.keyCode === 37 ) { 282 this.previousTheme(); 283 } 284 285 // Prevent the underlying modal to advance too. 286 return false; 287 } 288 }); 289 290 _.extend( wp.themes.view.InstallerSearch.prototype, { 291 doSearch: _.debounce( function( value ) { 292 var request = {}; 293 294 request.search = value; 295 296 // Intercept an [author] search. 297 // 298 // If input value starts with `author:` send a request 299 // for `author` instead of a regular `search` 300 if ( value.substring( 0, 7 ) === 'author:' ) { 301 request.search = ''; 302 request.author = value.slice( 7 ); 303 } 304 305 // Intercept a [tag] search. 306 // 307 // If input value starts with `tag:` send a request 308 // for `tag` instead of a regular `search` 309 if ( value.substring( 0, 4 ) === 'tag:' ) { 310 request.search = ''; 311 request.tag = [ value.slice( 4 ) ]; 312 } 313 314 $( '.filter-links li > a.current' ).removeClass( 'current' ); 315 $( 'body' ).removeClass( 'show-filters filters-applied' ); 316 317 // Get the themes by sending Ajax POST request to api.wordpress.org/themes 318 // or searching the local cache 319 this.collection.query( request ); 320 321 // Set route 322 if ( value ) { 323 wp.themes.router.navigate( wp.themes.router.baseUrl( wp.themes.router.searchPath + value ), { replace: true } ); 324 } else { 325 wp.themes.router.navigate( wp.themes.router.baseUrl( '' ) ); 326 } 327 }, 300 ) 328 }); 329 242 330 _.extend( wp.themes.InstallerRouter.prototype, { 243 331 routes: { 244 332 '/:slug/': 'preview', 245 '/ browse/:sort/': 'sort',333 '/tag/:tag/': 'onFilter', 246 334 '/?upload': 'upload', 247 335 '/search.php?q=:query': 'search', 336 '/browse/:sort/': 'sort', 337 '/': 'sort', 248 338 '': 'sort' 249 339 }, … … 258 348 }); 259 349 350 _.extend( wp.themes.RunInstaller, { 351 extraRoutes: function() { 352 var self = this; 353 354 wp.themes.router.on( 'route:tag', function( tag ) { 355 $( '#filter-id-' + tag).checked( true ); 356 self.view.applyFilters(); 357 }); 358 } 359 }); 360 260 361 }( jQuery, wp ) ); -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/style.css
r1021 r1034 20 20 p { 21 21 margin-bottom: 1.5em; 22 } 23 24 p a, 25 p a:hover { 26 border: none; 22 27 } 23 28 … … 52 57 .wrap { 53 58 box-sizing: border-box; 59 clear: both; 54 60 margin: 0 auto; 55 61 max-width: 960px; 56 62 padding: 0 10px; 57 63 } 64 65 .theme-overlay .theme-backdrop { 66 position: fixed; 67 } 68 58 69 .theme-overlay .theme-wrap { 59 70 left: 30px; 71 overflow: hidden; 60 72 top: 3%; 61 73 } … … 65 77 } 66 78 67 @media only screen and (max-width: 782px) { 68 .theme-overlay .theme-wrap { 69 bottom: 3%; 70 left: 10px; 71 right: 10px; 72 } 73 } 74 75 .theme-wrap .theme-about > div:not(.notice) { 79 .theme-browser .themes { 80 font-size: 0; 81 } 82 .theme-browser .theme { 83 display: inline-block; 84 float: none; 85 } 86 .theme-browser .theme:hover, 87 .theme-browser .theme:focus { 88 border-color: #5b9dd9; 89 -webkit-box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); 90 box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); 91 } 92 93 .theme-browser .theme:hover .theme-screenshot img, 94 .theme-browser .theme:focus .theme-screenshot img { 95 opacity: 0.4; 96 } 97 98 .theme-browser .theme:hover .more-details, 99 .theme-browser .theme:focus .more-details, 100 .theme-browser .theme .more-details:focus { 101 opacity: 1; 102 } 103 104 .theme-overlay .theme-about { 105 bottom: 0; 106 } 107 108 .theme-wrap .theme-info > div { 76 109 margin-bottom: 75px; 77 110 } … … 86 119 87 120 .theme-wrap .theme-screenshots { 88 float: none;89 } 90 91 .theme-wrap .theme-downloads { 121 float: left; 122 margin-bottom: 75px; 123 max-width: 880px; 124 text-align: center; 92 125 width: 55%; 93 126 } 127 128 .theme-wrap .screenshot { 129 overflow: initial; 130 } 131 132 .theme-wrap .theme-actions { 133 background: none; 134 border: none; 135 padding: 10px 25px 5px; 136 position: relative; 137 text-align: center; 138 z-index: auto; 139 } 140 94 141 .theme-wrap .theme-devs, 95 142 .theme-wrap .theme-ratings { 96 143 display: inline-block; 97 144 vertical-align: top; 98 width: 26%;145 width: 46%; 99 146 } 100 147 … … 103 150 } 104 151 105 .theme-wrap .theme-ratings {106 margin-right: 3%;107 }108 109 152 .theme-wrap .theme-devs h5 { 110 153 margin: 1em 0 0 0; … … 112 155 .theme-wrap .theme-devs li { 113 156 line-height: 1.5; 157 } 158 159 .theme-wrap .theme-ratings { 160 margin-right: 7%; 161 } 162 163 .theme-wrap .theme-ratings .counter-label { 164 float: left; 165 margin-right: 5px; 166 } 167 .theme-wrap .theme-ratings .counter-back, 168 .theme-wrap .theme-ratings .counter-bar { 169 float: left; 170 height: 17px; 171 } 172 .theme-wrap .theme-ratings .counter-back { 173 background-color: #ececec; 174 width: 92px; 175 } 176 .theme-wrap .theme-ratings .counter-bar { 177 background-color: #fddb5a; 178 } 179 .theme-wrap .theme-ratings .counter-count { 180 margin-left: 5px; 181 } 182 183 .theme-wrap .theme-tags { 184 border: none; 114 185 } 115 186 … … 196 267 } 197 268 269 .theme-wrap .theme-downloads .total-downloads { 270 color: #555; 271 font-size: 14px; 272 font-weight: 400; 273 line-height: 1.5; 274 margin: 1.5em 0 0 0; 275 } 276 198 277 .single .theme-wrap .theme-tags { 199 278 border-top: 3px solid #eee; … … 211 290 } 212 291 213 .single .theme-wrap .theme-screenshots {214 margin: 0 30px 0 0;215 width: 55%;216 max-width: 880px;217 text-align: center;218 }219 292 .single .theme-wrap .screenshot { 220 293 border: 1px solid #fff; … … 231 304 } 232 305 233 .single .theme-wrap .theme-actions {234 background: #f3f3f3;235 border-top: 1px solid #eee;236 box-sizing: border-box;237 margin: 0 -4.3% -2.1%;238 padding: 10px 25px 5px;239 text-align: center;240 }241 242 306 .ie8 .single .theme-wrap .theme-actions { 243 307 border: 1px solid #eee; 244 }245 246 .single .theme-wrap .theme-actions a {247 margin-right: 5px;248 margin-bottom: 5px;249 308 } 250 309 … … 255 314 background-size: 20px 20px; 256 315 display: none; 257 float: right;258 316 opacity: 0.7; 259 317 filter: alpha(opacity=70); 260 318 width: 20px; 261 319 height: 20px; 262 margin: 2 px 5px 0;320 margin: 25% auto 70%; 263 321 } 264 322 265 323 .loading-content .spinner { 266 324 display: block; 267 float: none;268 margin: 40px auto 0;269 325 } 270 326 … … 277 333 margin: 0 !important; 278 334 } 279 335 .theme-overlay .theme-header .close { 336 border-left: 0; 337 border-right: 1px solid #ddd; 338 float: left; 339 } 280 340 .theme-overlay .theme-header .right { 281 341 float: left !important; … … 373 433 float: right; 374 434 margin: 12px 0; 375 } 376 377 .wp-filter .search-form input[type="search"] { 435 display: inline-block; 436 } 437 438 .wp-filter .wp-filter-search { 378 439 margin: 0; 379 440 padding: 3px 5px; … … 461 522 462 523 .filter-group { 463 -webkit-box-sizing: border-box;464 -moz-box-sizing: border-box;524 background: #fff; 525 border: 1px solid #e5e5e5; 465 526 box-sizing: border-box; 466 527 float: left; 528 height: 710px; 467 529 margin: 0 1% 0 0; 468 530 padding: 10px; 469 width: 19%; 470 background: #fff; 471 border: 1px solid #e5e5e5; 531 width: calc(100% / 4 - 7px); 472 532 -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.04); 473 533 box-shadow: 0 1px 1px rgba(0,0,0,0.04); 534 } 535 536 .filter-group:last-of-type { 537 margin: 0; 474 538 } 475 539 … … 564 628 .show-filters.filters-applied .content-filterable { 565 629 display: block; 566 }567 568 .loading-content .spinner {569 display: block;570 margin: 40px auto 0;571 float: none;572 }573 574 @media only screen and (max-width: 1120px) {575 .wp-filter .search-form {576 float: none;577 margin: 20px 0;578 }579 580 .filter-drawer {581 border-bottom: 1px solid #eee;582 }583 584 .filter-group {585 margin-bottom: 0;586 margin-top: 5px;587 width: 100%;588 }589 590 .filter-group li {591 margin: 10px 0;592 }593 }594 595 @media only screen and (max-width: 782px) {596 .filter-group,597 .filter-group li {598 width: 100%;599 }600 601 630 } 602 631 … … 652 681 } 653 682 683 .wrap .button-primary.hover, 684 .wrap .button-primary:hover, 685 .wrap .button-primary.focus, 686 .wrap .button-primary:focus { 687 background: #1e8cbe; 688 border-color: #0074a2; 689 -webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, 0.6); 690 box-shadow: inset 0 1px 0 rgba(120, 200, 230, 0.6); 691 color: #fff; 692 } 693 694 .wrap .button-secondary { 695 color: #555; 696 border-color: #ccc; 697 background: #f7f7f7; 698 -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0, 0, 0, 0.08); 699 box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0, 0, 0, 0.08); 700 vertical-align: top; 701 } 702 703 .wrap .button-secondary.hover, 704 .wrap .button-secondary:hover, 705 .wrap .button-secondary.focus, 706 .wrap .button-secondary:focus { 707 background: #fafafa; 708 border-color: #999; 709 color: #222; 710 } 711 654 712 /* Theme notices */ 655 .notice { 713 .notice, 714 .error { 656 715 background: #fff; 657 716 border: 1px solid #fff; … … 663 722 } 664 723 665 .notice p { 724 .notice p, 725 .error p { 666 726 margin: 0.5em 0; 667 727 padding: 2px; … … 676 736 } 677 737 678 .notice-error { 738 .notice-error, 739 .error { 679 740 border-color: #dd3d36; 680 741 } … … 688 749 margin: 5px 0 15px; 689 750 } 751 752 @media only screen and (min-width: 1640px) { 753 .theme-browser .themes .theme { 754 width: 30.6%; 755 margin: 0 4% 4% 0; 756 } 757 758 .theme-browser .theme:nth-child(4n) { 759 margin-right: 4%; 760 } 761 762 .theme-browser .theme:nth-child(3n) { 763 margin-right: 0; 764 } 765 } 766 767 @media only screen and (max-width: 1120px) { 768 .filter-drawer { 769 border-bottom: 1px solid #eee; 770 } 771 772 .filter-group { 773 margin-bottom: 0; 774 margin-top: 5px; 775 width: 100%; 776 } 777 778 .filter-group li { 779 margin: 10px 0; 780 } 781 } 782 783 @media only screen and (max-width: 960px) { 784 /* Keep ratings and dev links stacked until they have enough room. */ 785 .theme-wrap .theme-devs, 786 .theme-wrap .theme-ratings { 787 margin: auto; 788 width: 100%; 789 } 790 } 791 792 @media only screen and (max-width: 782px) { 793 .theme-overlay .theme-wrap { 794 bottom: 3%; 795 left: 10px; 796 right: 10px; 797 } 798 799 .wp-filter .search-form { 800 float: none; 801 margin: 20px 0; 802 width: 100%; 803 } 804 805 .filter-group, 806 .filter-group li { 807 width: 100%; 808 } 809 810 .theme-wrap .theme-screenshots { 811 float: none; 812 width: 100%; 813 } 814 815 .theme-wrap .theme-actions { 816 padding: 10px 0 5px; 817 } 818 819 .theme-wrap .theme-actions .button-primary { 820 display: none; 821 } 822 823 .theme-wrap .theme-actions .button-secondary { 824 font-size: 18px; 825 height: auto; 826 padding: 0.5em 0; 827 width: 100%; 828 } 829 830 .theme-wrap .theme-info { 831 float: none; 832 width: auto; 833 } 834 835 .theme-install-overlay .wp-full-overlay-header .theme-install { 836 line-height: 26px; 837 margin-top: 8px; 838 } 839 } 840 841 @media only screen and (max-width: 480px) { 842 /* Align login info with site title. */ 843 #headline .login { 844 float: left; 845 margin-left: 10px; 846 } 847 848 /* Hide Feature Filter on mobile. */ 849 .wp-filter .drawer-toggle { 850 display: none; 851 } 852 853 /* Full width search form. */ 854 .wp-filter .search-form, 855 .wp-filter .wp-filter-search { 856 width: 100%; 857 } 858 859 .admin-bar .theme-overlay .theme-wrap { 860 top: 3%; 861 } 862 863 .theme-browser .themes .theme { 864 margin-right: 0; 865 } 866 867 .theme-wrap .theme-screenshots, 868 .theme-wrap .theme-info > div { 869 margin-bottom: 30px; 870 } 871 } -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme-preview.php
r1006 r1034 5 5 <a href="#" class="previous-theme"><span class="screen-reader-text"><?php _ex( 'Previous', 'Button label for a theme' ); ?></span></a> 6 6 <a href="#" class="next-theme"><span class="screen-reader-text"><?php _ex( 'Next', 'Button label for a theme' ); ?></span></a> 7 <a href=" #" class="button button-primary theme-install"><?php _e( 'Download' ); ?></a>7 <a href="//downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip" class="button button-primary theme-install"><?php _e( 'Download' ); ?></a> 8 8 </div> 9 9 <div class="wp-full-overlay-sidebar-content"> … … 23 23 24 24 <# if ( data.num_ratings ) { #> 25 <small class="ratings"> {{ data.num_ratings }}</small>25 <small class="ratings"><?php printf( __( '(based on %s ratings).', 'wporg-themes' ), '{{ data.num_ratings }}' ); ?></small> 26 26 <# } else { #> 27 27 <small class="ratings"><?php _e( 'No ratings.' ); ?></small> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme-single.php
r1021 r1034 14 14 <# } #> 15 15 16 <div class="theme-info hentry">17 <h3 class="theme-name entry-title">{{{ data.name }}}</h3>18 <span class="theme-version">19 < ?php printf( __( 'Version: %s' ), sprintf( '<abbr title="%1$s">%2$s</abbr>', esc_attr( sprintf( __( 'Last updated: %s' ), '{{ new Date(data.last_updated).toLocaleDateString() }}' ) ), '{{{ data.version }}}' ) ); ?>20 </span>21 <h4 class="theme-author"><?php printf( __( 'By %s' ), '<span class="author">{{{ data.author }}}</span>' ); ?></h4>16 <div class="theme-screenshots"> 17 <# if ( data.screenshot_url ) { #> 18 <div class="screenshot"><img src="{{ data.screenshot_url }}" alt=""/></div> 19 <# } else { #> 20 <div class="screenshot blank"></div> 21 <# } #> 22 22 23 <p class="theme-description entry-summary">{{{ data.description }}}</p>24 23 25 <# if ( data.parent ) { #> 26 <p class="parent-theme"><?php printf( __( 'This is a child theme of %s.' ), '<strong>{{{ data.parent }}}</strong>' ); ?></p> 27 <# } #> 24 <div class="theme-actions"> 25 <a href="//downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip" class="button button-primary"><?php _e( 'Download' ); ?></a> 26 <a href="{{{ data.preview_url }}}" class="button button-secondary"><?php _e( 'Preview' ); ?></a> 27 </div> 28 </div><!-- .theme-screenshot --> 29 30 <div class="theme-info"> 31 <div class="theme hentry"> 32 <h3 class="theme-name entry-title">{{{ data.name }}}</h3> 33 <span class="theme-version"> 34 <?php printf( __( 'Version: %s' ), sprintf( '<abbr title="%1$s">%2$s</abbr>', esc_attr( sprintf( __( 'Last updated: %s' ), '{{ new Date(data.last_updated).toLocaleDateString() }}' ) ), '{{{ data.version }}}' ) ); ?> 35 </span> 36 <h4 class="theme-author"><?php printf( __( 'By %s' ), '<span class="author">{{{ data.author }}}</span>' ); ?></h4> 37 38 <p class="theme-description entry-summary">{{{ data.description }}}</p> 39 40 <# if ( data.parent ) { #> 41 <div class="theme-notice notice notice-info"> 42 <p class="parent"><?php printf( __( 'This is a child theme of %s.' ), sprintf( '<a href="/%1$s">%2$s</a>', '{{{ data.parent.slug }}}', '{{{ data.parent.name }}}' ) ); ?></p> 43 </div> 44 <# } #> 45 </div><!-- .theme-info --> 46 47 <div class="theme-ratings" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> 48 <meta itemprop="ratingValue" content="{{ (data.rating/20).toFixed(1) }}"/> 49 <meta itemprop="ratingCount" content="{{ data.num_ratings }}"/> 50 <h4><?php _e( 'Ratings', 'wporg-themes' ); ?></h4> 51 <div class="star-holder"> 52 <div class="star-rating" style="width: {{ (data.rating).toFixed(1) }}%"><?php printf( __( '%d stars', 'wporg-themes' ), '{{ Math.round( data.rating ) }}' ); ?></div> 53 </div> 54 <span><?php printf( __( '%s out of 5 stars.', 'wporg-themes' ), '{{ (data.rating/20).toFixed(1) }}' ); ?></span> 55 56 <# if ( data.lvl_ratings ) { #> 57 <div class="counter-container"> 58 <a href="//wordpress.org/support/view/theme-reviews/{{ data.id }}?filter=5" title="<?php printf( __( 'Click to see reviews that provided a rating of %d stars', 'wporg-themes' ), 5 ); ?>"> 59 <span class="counter-label"><?php printf( __( '%d stars', 'wporg-themes' ), 5 ); ?></span> 60 <span class="counter-back"> 61 <span class="counter-bar" style="width: {{ 92 * data.lvl_ratings[5] / data.num_ratings }}px;"></span> 62 </span> 63 </a> 64 <span class="counter-count">{{ data.lvl_ratings[5] }}</span> 65 </div> 66 <div class="counter-container"> 67 <a href="//wordpress.org/support/view/theme-reviews/{{ data.id }}?filter=4" title="<?php printf( __( 'Click to see reviews that provided a rating of %d stars', 'wporg-themes' ), 4 ); ?>"> 68 <span class="counter-label"><?php printf( __( '%d stars', 'wporg-themes' ), 4 ); ?></span> 69 <span class="counter-back"> 70 <span class="counter-bar" style="width: {{ 92 * data.lvl_ratings[4] / data.num_ratings }}px;"></span> 71 </span> 72 </a> 73 <span class="counter-count">{{ data.lvl_ratings[4] }}</span> 74 </div> 75 <div class="counter-container"> 76 <a href="//wordpress.org/support/view/theme-reviews/{{ data.id }}?filter=3" title="<?php printf( __( 'Click to see reviews that provided a rating of %d stars', 'wporg-themes' ), 3 ); ?>"> 77 <span class="counter-label"><?php printf( __( '%d stars', 'wporg-themes' ), 3 ); ?></span> 78 <span class="counter-back"> 79 <span class="counter-bar" style="width: {{ 92 * data.lvl_ratings[3] / data.num_ratings }}px;"></span> 80 </span> 81 </a> 82 <span class="counter-count">{{ data.lvl_ratings[3] }}</span> 83 </div> 84 <div class="counter-container"> 85 <a href="//wordpress.org/support/view/theme-reviews/{{ data.id }}?filter=2" title="<?php printf( __( 'Click to see reviews that provided a rating of %d stars', 'wporg-themes' ), 2 ); ?>"> 86 <span class="counter-label"><?php printf( __( '%d stars', 'wporg-themes' ), 2 ); ?></span> 87 <span class="counter-back"> 88 <span class="counter-bar" style="width: {{ 92 * data.lvl_ratings[2] / data.num_ratings }}px;"></span> 89 </span> 90 </a> 91 <span class="counter-count">{{ data.lvl_ratings[2] }}</span> 92 </div> 93 <div class="counter-container"> 94 <a href="//wordpress.org/support/view/theme-reviews/{{ data.id }}?filter=1" title="<?php printf( __( 'Click to see reviews that provided a rating of %d stars', 'wporg-themes' ), 1 ); ?>"> 95 <span class="counter-label"><?php printf( __( '%d stars', 'wporg-themes' ), 1 ); ?></span> 96 <span class="counter-back"> 97 <span class="counter-bar" style="width: {{ 92 * data.lvl_ratings[1] / data.num_ratings }}px;"></span> 98 </span> 99 </a> 100 <span class="counter-count">{{ data.lvl_ratings[1] }}</span> 101 </div> 102 <# } #> 103 </div><!-- .theme-rating --> 104 105 <div class="theme-devs"> 106 <h4><?php _e( 'Development', 'wporg-themes' ); ?></h4> 107 <h5><?php _e( 'Subscribe', 'wporg-themes' ); ?></h5> 108 <ul class="unmarked-list"> 109 <li> 110 <a href="//themes.trac.wordpress.org/log/{{data.id}}?limit=100&mode=stop_on_copy&format=rss"> 111 <img src="//s.w.org/style/images/feedicon.png" style="vertical-align:text-top;" /> 112 <?php _e( 'Development Log', 'wporg' ); ?> 113 </a> 114 </li> 115 </ul> 116 117 <h5><?php _e( 'Browse the Code', 'wporg-themes' ); ?></h5> 118 <ul class="unmarked-list"> 119 <li><a href="//themes.trac.wordpress.org/log/{{data.id}}/" rel="nofollow"><?php _e( 'Development Log', 'wporg-themes' ); ?></a></li> 120 <li><a href="//themes.svn.wordpress.org/{{data.id}}/" rel="nofollow"><?php _e( 'Subversion Repository', 'wporg-themes' ); ?></a></li> 121 <li><a href="//themes.trac.wordpress.org/browser/{{data.id}}/" rel="nofollow"><?php _e( 'Browse in Trac', 'wporg-themes' ); ?></a></li> 122 </ul> 123 </div><!-- .theme-devs --> 124 125 <div class="theme-downloads"> 126 <h4><?php _e( 'Downloads Per Day' ); ?></h4> 127 <div id="theme-download-stats-{{data.id}}" class="chart"></div> 128 <p class="total-downloads"><?php printf( __( 'Total downloads: %s' ), '<strong>{{ new Number(data.downloaded).toLocaleString() }}</strong>' ); ?></p> 129 </div><!-- .theme-downloads --> 28 130 29 131 <# if ( data.tags ) { #> 30 <p class="theme-tags"> 31 <span><?php _e( 'Tags:' ); ?></span> 32 <# _.each( data.tags, function( tag ) { #> 33 <a href="">{{{ tag }}}</a> 34 <# }); #> 35 </p> 132 <div class="theme-tags"> 133 <h4><?php _e( 'Tags:' ); ?></h4> 134 {{{ data.tags }}} 135 </div><!-- .theme-tags --> 36 136 <# } #> 37 </div><!-- .theme-info --> 38 39 <div class="theme-screenshots"> 40 <# if ( data.screenshot_url ) { #> 41 <div class="screenshot"><img src="{{ data.screenshot_url }}" alt=""/></div> 42 <# } else { #> 43 <div class="screenshot blank"></div> 44 <# } #> 45 </div><!-- .theme-screenshot --> 46 47 <div class="theme-ratings" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> 48 <meta itemprop="ratingValue" content="{{ (data.rating/20).toFixed(1) }}"/> 49 <meta itemprop="ratingCount" content="{{ data.num_ratings }}"/> 50 <h4><?php _e( 'Ratings', 'wporg-themes' ); ?></h4> 51 <div class="star-holder"> 52 <div class="star-rating" style="width: {{ (data.rating).toFixed(1) }}%"><?php printf( __( '%d stars', 'wporg-themes' ), '{{ Math.round( data.rating ) }}' ); ?></div> 53 </div> 54 <span><?php printf( __( '%s out of 5 stars.', 'wporg-themes' ), '{{ (data.rating/20).toFixed(1) }}' ); ?></span> 55 <?php 56 $ratingcount = array(); // TODO: Rating counts 57 foreach ( range( 1, 5 ) as $val ) { 58 if ( empty( $ratingcount[ $val ] ) ) { 59 $ratingcount[ $val ] = 0; 60 } 61 } 62 krsort( $ratingcount ); 63 foreach ( $ratingcount as $key => $ratecount ) : 64 ?> 65 <div class="counter-container"> 66 <a href="//wordpress.org/support/view/theme-reviews/{{ data.id }}?filter=<?php echo $key; ?>" title="<?php printf( _n( 'Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $key, 'wporg-themes' ), $key ); ?>"> 67 <span class="counter-label" style="float:left; margin-right:5px;"><?php printf( __( '%d stars', 'wporg-themes' ), $key ); ?></span> 68 <span class="counter-back" style="height:17px;width:92px;background-color:#ececec;float:left;"> 69 <span class="counter-bar" style="width: <?php echo 92 * ( $ratecount / count( 1 ) ); ?>px;height:17px;background-color:#fddb5a;float:left;"></span> 70 </span> 71 </a> 72 <span class="counter-count" style="margin-left:5px;"><?php echo $ratecount; ?></span> 73 </div> 74 <?php endforeach; ?> 75 </div><!-- .theme-rating --> 76 77 <div class="theme-devs"> 78 <h4><?php _e( 'Developers', 'wporg-themes' ); ?></h4> 79 <h5><?php _e( 'Subscribe', 'wporg-themes' ); ?></h5> 80 <ul class="unmarked-list"> 81 <li> 82 <a href="//themes.trac.wordpress.org/log/{{data.id}}?limit=100&mode=stop_on_copy&format=rss"> 83 <img src="//s.w.org/style/images/feedicon.png" style="vertical-align:text-top;" /> 84 <?php _e( 'Development Log', 'wporg' ); ?> 85 </a> 86 </li> 87 </ul> 88 89 <h5><?php _e( 'Browse the Code', 'wporg-themes' ); ?></h5> 90 <ul class="unmarked-list"> 91 <li><a href="//themes.trac.wordpress.org/log/{{data.id}}/" rel="nofollow"><?php _e( 'Development Log', 'wporg-themes' ); ?></a></li> 92 <li><a href="//themes.svn.wordpress.org/{{data.id}}/" rel="nofollow"><?php _e( 'Subversion Repository', 'wporg-themes' ); ?></a></li> 93 <li><a href="//themes.trac.wordpress.org/browser/{{data.id}}/" rel="nofollow"><?php _e( 'Browse in Trac', 'wporg-themes' ); ?></a></li> 94 </ul> 95 </div><!-- .theme-devs --> 96 97 <div class="theme-downloads"> 98 <h4><?php _e( 'Downloads Per Day' ); ?></h4> 99 <div id="theme-download-stats-{{data.id}}" class="chart"></div> 100 </div><!-- .theme-downloads --> 101 </div> 102 103 <div class="theme-actions"> 104 <a href="" class="button button-primary"><?php _e( 'Download' ); ?></a> 105 <a href="{{{ data.preview_url }}}" class="button button-secondary"><?php _e( 'Preview' ); ?></a> 137 </div> 106 138 </div> 107 139 </div> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme.php
r1006 r1034 12 12 13 13 <div class="theme-actions"> 14 <a class="button button-primary preview install-theme-preview" href=" #"><?php esc_html_e( 'Download' ); ?></a>14 <a class="button button-primary preview install-theme-preview" href="//downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip"><?php esc_html_e( 'Download' ); ?></a> 15 15 </div> 16 16 </script>
Note: See TracChangeset
for help on using the changeset viewer.