Changeset 1489
- Timestamp:
- 04/20/2015 02:17:13 AM (11 years ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content
- Files:
-
- 1 added
- 2 deleted
- 9 edited
- 2 copied
-
plugins/theme-directory/theme-directory.php (modified) (4 diffs)
-
themes/pub/wporg-themes/content-single.php (deleted)
-
themes/pub/wporg-themes/content.php (deleted)
-
themes/pub/wporg-themes/functions.php (modified) (6 diffs)
-
themes/pub/wporg-themes/header.php (modified) (1 diff)
-
themes/pub/wporg-themes/index.php (modified) (4 diffs)
-
themes/pub/wporg-themes/js/theme.js (modified) (6 diffs)
-
themes/pub/wporg-themes/js/theme.min.js (modified) (1 diff)
-
themes/pub/wporg-themes/rss.php (added)
-
themes/pub/wporg-themes/style.css (modified) (2 diffs)
-
themes/pub/wporg-themes/theme-single.php (copied) (copied from sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme-single.php) (7 diffs)
-
themes/pub/wporg-themes/theme.php (copied) (copied from sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme.php) (1 diff)
-
themes/pub/wporg-themes/view-templates/theme-single.php (modified) (2 diffs)
-
themes/pub/wporg-themes/view-templates/theme.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/theme-directory/theme-directory.php
r1479 r1489 74 74 'supports' => array( 'title', 'editor', 'author', 'custom-fields', 'page-attributes' ), 75 75 'taxonomies' => array( 'category', 'post_tag', 'type' ), 76 'public' => true,76 'public' => false, 77 77 'show_in_nav_menus' => false, 78 78 'has_archive' => true, … … 116 116 117 117 /** 118 * Adjusts query to account for custom views.119 *120 * @param WP_Query $wp_query121 * @return WP_Query122 */123 function wporg_themes_set_up_query( $wp_query ) {124 if ( is_admin() || in_array( $wp_query->get( 'pagename' ), array( 'upload', 'commercial', 'getting-started' ) ) || in_array( $wp_query->get( 'post_type' ), array( 'nav_menu_item', 'theme_shop' ) ) ) {125 return $wp_query;126 }127 128 $wp_query->set( 'post_type', 'repopackage' );129 130 if ( $wp_query->is_home() && ! $wp_query->get( 'browse' ) ) {131 $wp_query->set( 'browse', 'featured' );132 }133 134 if ( $wp_query->get( 'browse' ) ) {135 switch ( $wp_query->get( 'browse' ) ) {136 case 'featured':137 $wp_query->set( 'paged', 1 );138 $wp_query->set( 'posts_per_page', 15 );139 $wp_query->set( 'post__in', (array) wp_cache_get( 'browse-featured', 'theme-info' ) );140 break;141 142 case 'popular':143 add_filter( 'posts_clauses', 'wporg_themes_popular_posts_clauses' );144 break;145 146 case 'new':147 // Nothing to do here.148 break;149 150 }151 152 // Only return themes that were updated in the last two years for all 'browse' requests.153 $wp_query->set( 'date_query', array(154 array(155 'column' => 'post_modified_gmt',156 'after' => '-2 years',157 ),158 ) );159 160 }161 162 return $wp_query;163 }164 add_filter( 'pre_get_posts', 'wporg_themes_set_up_query' );165 166 /**167 118 * Filter the permalink for the Packages to be /post_name/ 168 119 * … … 179 130 } 180 131 add_filter( 'post_type_link', 'wporg_themes_package_link', 10, 2 ); 181 182 /**183 * Adjusts the amount of found posts when browsing featured themes.184 *185 * @param string $found_posts186 * @param WP_Query $wp_query187 * @return string188 */189 function wporg_themes_found_posts( $found_posts, $wp_query ) {190 if ( $wp_query->is_main_query() && 'featured' === $wp_query->get( 'browse' ) ) {191 $found_posts = $wp_query->get( 'posts_per_page' );192 }193 194 return $found_posts;195 }196 add_filter( 'found_posts', 'wporg_themes_found_posts', 10, 2 );197 198 /**199 * Filters SQL clauses, to set up a query for the most popular themes based on downloads.200 *201 * @param array $clauses202 * @return array203 */204 function wporg_themes_popular_posts_clauses( $clauses ) {205 global $wpdb;206 207 $week = gmdate( 'Y-m-d', strtotime( 'last week' ) );208 $clauses['where'] .= " AND s.stamp >= '{$week}'";209 $clauses['groupby'] = "{$wpdb->posts}.ID";210 $clauses['join'] = "JOIN bb_themes_stats AS s ON ( {$wpdb->posts}.post_name = s.slug )";211 $clauses['orderby'] = 'week_downloads DESC';212 $clauses['fields'] .= ', SUM(s.downloads) AS week_downloads';213 214 return $clauses;215 }216 132 217 133 /** … … 611 527 * @return array 612 528 */ 613 function wporg_themes_prepare_themes_for_js() { 614 global $wp_query; 615 616 include_once API_WPORGPATH . 'themes/info/1.0/class-themes-api.php'; 617 $api = new Themes_API( 'get_result' ); 618 $api->fields = array_merge( $api->fields, array( 619 'description' => true, 620 'sections' => false, 621 'tested' => true, 622 'requires' => true, 623 'rating' => true, 624 'ratings' => true, 625 'downloaded' => true, 626 'downloadlink' => true, 627 'last_updated' => true, 628 'homepage' => true, 629 'tags' => true, 630 'num_ratings' => true, 631 'parent' => true, 632 'theme_url' => true, 633 'extended_author' => true, 634 'photon_screenshots' => true, 635 ) ); 636 637 $themes = array_map( array( $api, 'fill_theme' ), $wp_query->posts ); 529 function wporg_themes_get_themes_for_query() { 530 static $result = null; 531 if ( $result ) { 532 return $result; 533 } 638 534 639 535 $request = array(); 640 536 if ( get_query_var( 'browse' ) ) { 641 537 $request['browse'] = get_query_var( 'browse' ); 642 } else if ( $wp_query->is_tag() ) { 538 539 } else if ( get_query_var( 'tag' ) ) { 643 540 $request['tag'] = (array) explode( '+', get_query_var( 'tag' ) ); 644 } 645 else if ( $wp_query->is_search() ) {541 542 } else if ( get_query_var( 's' ) ) { 646 543 $request['search'] = get_query_var( 's' ); 647 } 648 else if ( $wp_query->is_author() ) {544 545 } else if ( get_query_var( 'author' ) ) { 649 546 $request['author'] = get_user_by( 'id', get_query_var( 'author' ) )->user_nicename; 650 } 651 else if ( $wp_query->is_singular( 'repopackage' ) ) { 652 $request['theme'] = get_query_var( 'name' ); 653 } 654 655 return array( 656 'themes' => $themes, 547 548 } else if ( get_query_var( 'name' ) || get_query_var( 'pagename' ) ) { 549 $request['theme'] = basename( get_query_var( 'name' ) ?: get_query_var( 'pagename' ) ); 550 } 551 552 if ( get_query_var( 'paged' ) ) { 553 $request['page'] = (int)get_query_var( 'paged' ); 554 } 555 556 if ( empty( $request ) ) { 557 $request['browse'] = 'featured'; 558 } 559 560 $request['fields'] = array( 561 'description' => true, 562 'sections' => false, 563 'tested' => true, 564 'requires' => true, 565 'downloaded' => true, 566 'downloadlink' => true, 567 'last_updated' => true, 568 'homepage' => true, 569 'theme_url' => true, 570 'parent' => true, 571 'tags' => true, 572 'rating' => true, 573 'ratings' => true, 574 'num_ratings' => true, 575 'extended_author' => true, 576 'photon_screenshots' => true, 577 ); 578 579 $api_result = wporg_themes_query_api( 'query_themes', $request ); 580 581 unset( $request['fields'] ); 582 583 return $result = array( 584 'themes' => $api_result->themes, 657 585 'request' => $request, 658 'total' => (int) $wp_query->found_posts, 586 'total' => (int) $api_result->info['results'], 587 'pages' => (int) $api_result->info['pages'], 659 588 ); 589 } 590 function wporg_themes_prepare_themes_for_js() { 591 return wporg_themes_get_themes_for_query(); 660 592 } 661 593 -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/functions.php
r1477 r1489 19 19 load_theme_textdomain( 'wporg-themes' ); 20 20 21 add_theme_support( 'automatic-feed-links' );22 23 21 add_theme_support( 'html5', array( 24 22 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' 25 23 ) ); 26 24 27 add_filter('redirect_canonical','__return_false'); 25 // No need for canonical lookups 26 remove_action( 'template_redirect', 'redirect_canonical' ); 27 remove_action( 'template_redirect', 'wp_old_slug_redirect' ); 28 28 } 29 29 add_action( 'after_setup_theme', 'wporg_themes_setup' ); … … 45 45 if ( ! is_singular( 'page' ) ) { 46 46 wp_enqueue_script( 'google-jsapi', '//www.google.com/jsapi', array( 'jquery' ), null, true ); 47 wp_enqueue_script( 'wporg-theme', get_template_directory_uri() . "/js/theme{$suffix}.js", array( 'wp-backbone' ), ' 1', true );47 wp_enqueue_script( 'wporg-theme', get_template_directory_uri() . "/js/theme{$suffix}.js", array( 'wp-backbone' ), '2', true ); 48 48 49 49 wp_localize_script( 'wporg-theme', '_wpThemeSettings', array( 50 50 'themes' => false, 51 'query' => wporg_themes_ prepare_themes_for_js(),51 'query' => wporg_themes_get_themes_for_query(), 52 52 'settings' => array( 53 53 'title' => __( 'WordPress › %s « Free WordPress Themes', 'wporg-themes' ), 54 54 'isMobile' => wp_is_mobile(), 55 'postsPerPage' => get_option( 'posts_per_page', 15 ),55 'postsPerPage' => 24, 56 56 'path' => trailingslashit( parse_url( home_url(), PHP_URL_PATH ) ), 57 57 ), … … 74 74 // No Jetpack styles needed. 75 75 add_filter( 'jetpack_implode_frontend_css', '__return_false' ); 76 77 // No dashicons needed. 78 wp_deregister_style( 'dashicons' ); 79 wp_register_style( 'dashicons', '' ); 76 80 } 77 81 add_action( 'wp_enqueue_scripts', 'wporg_themes_scripts' ); … … 88 92 */ 89 93 function wporg_themes_body_class( $classes ) { 90 if ( is_singular( 'repopackage' ) ) { 94 95 if ( ! is_page() && get_query_var( 'name' ) && ! is_404() ) { 91 96 $classes[] = 'modal-open'; 92 97 } … … 101 106 102 107 /** 103 * Create a nicely formatted and more specific title element text for output 104 * in head of document, based on current view. 105 * 106 * @global int $paged WordPress archive pagination page count. 107 * @global int $page WordPress paginated post page count. 108 * 109 * @param string $title Default title text for current view. 110 * @param string $sep Optional separator. 111 * @return string The filtered title. 108 * Prevent the default posts queries running, allowing pages to bypass 109 * We do this as the themes are pulled from an API. 112 110 */ 113 function wporg_themes_wp_title( $title, $sep ) { 114 global $paged, $page; 111 function wporg_themes_prevent_posts_query( $query, $wp_query ) { 112 if ( is_admin() || ! $wp_query->is_main_query() || $wp_query->get( 'pagename' ) ) { 113 return $query; 114 } 115 $wp_query->set( 'no_found_rows', true ); 116 return ''; // Don't make a query 117 } 118 add_filter( 'posts_request', 'wporg_themes_prevent_posts_query', 10, 2 ); 115 119 116 if ( is_feed() ) { 117 return $title; 120 /** 121 * Prevent 404 responses when we've got a theme via the API. 122 */ 123 function wporg_themes_prevent_404() { 124 global $wp_query; 125 if ( ! is_404() ) { 126 return; 118 127 } 128 $themes = wporg_themes_get_themes_for_query(); 129 if ( $themes['total'] ) { 130 $wp_query->is_404 = false; 131 status_header( 200 ); 132 } 133 } 134 add_filter( 'template_redirect', 'wporg_themes_prevent_404' ); 119 135 120 // Add the site name. 121 $title .= get_bloginfo( 'name', 'display' ); 122 123 // Add the site description for the home/front page. 124 $site_description = get_bloginfo( 'description', 'display' ); 125 if ( $site_description && ( is_home() || is_front_page() ) ) { 126 $title = "$title $sep $site_description"; 136 /** 137 * Overrides feeds to use a custom RSS2 feed which contains the current requests themes. 138 */ 139 function wporg_themes_custom_feed() { 140 if ( ! is_feed() ) { 141 return; 127 142 } 128 129 // Add a page number if necessary. 130 if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { 131 $title = "$title $sep " . sprintf( __( 'Page %s', 'wporg-themes' ), max( $paged, $page ) ); 132 } 133 134 return $title; 143 include __DIR__ . '/rss.php'; 144 die(); 135 145 } 136 add_filter( ' wp_title', 'wporg_themes_wp_title', 10, 2);146 add_filter( 'template_redirect', 'wporg_themes_custom_feed' ); 137 147 138 148 /** … … 145 155 } 146 156 add_action( 'wp_footer', 'wporg_themes_view_templates' ); 147 148 add_action('wp_enqueue_scripts','wporg_themes_disable_dashicons');149 function wporg_themes_disable_dashicons() {150 // Remove it only if the global header is used. (not e.g. chat.wordpress.org)151 if ( ! function_exists( 'global_wp_menu' ) ) {152 return;153 }154 155 // remove it, then reregister it as empty to maintain the dependencies but not load it a second time156 wp_deregister_style('dashicons');157 wp_register_style('dashicons','');158 } -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/header.php
r1477 r1489 13 13 <div id="headline"> 14 14 <div class="wrapper"> 15 <h2 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php _e( 'Theme Directory', 'wporg-themes' ) ?></a></h2>15 <h2 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php _e( 'Theme Directory', 'wporg-themes' ); ?></a></h2> 16 16 </div> 17 17 </div> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/index.php
r1477 r1489 12 12 */ 13 13 14 $themes = wporg_themes_get_themes_for_query(); 15 14 16 if ( ! function_exists( 'get_theme_feature_list' ) ) { 15 17 include ABSPATH . 'wp-admin/includes/theme.php'; … … 17 19 get_header(); 18 20 ?> 19 20 21 <div id="themes" class="wrap"> 21 22 <div class="wp-filter"> 22 23 <div class="filter-count"> 23 <span class="count theme-count"><?php echo $GLOBALS['wp_query']->found_posts; ?></span>24 <span class="count theme-count"><?php echo number_format_i18n( $themes['total'] ); ?></span> 24 25 </div> 25 26 26 27 <ul class="filter-links"> 27 <li><a href="<?php echo esc_url( home_url( 'browse/featured/' ) ); ?>" data-sort="featured" ><?php _ex( 'Featured', 'themes', 'wporg-themes' ); ?></a></li>28 <li><a href="<?php echo esc_url( home_url( 'browse/popular/' ) ); ?>" data-sort="popular" ><?php _ex( 'Popular', 'themes', 'wporg-themes' ); ?></a></li>29 <li><a href="<?php echo esc_url( home_url( 'browse/new/' ) ); ?>" data-sort="new" ><?php _ex( 'Latest', 'themes', 'wporg-themes' ); ?></a></li>28 <li><a href="<?php echo esc_url( home_url( 'browse/featured/' ) ); ?>" data-sort="featured" <?php if ( (is_front_page() && !get_query_var('browse') ) || 'featured' == get_query_var('browse') ) { echo 'class="current"'; } ?>><?php _ex( 'Featured', 'themes', 'wporg-themes' ); ?></a></li> 29 <li><a href="<?php echo esc_url( home_url( 'browse/popular/' ) ); ?>" data-sort="popular" <?php if ( 'popular' == get_query_var('browse') ) { echo 'class="current"'; } ?>><?php _ex( 'Popular', 'themes', 'wporg-themes' ); ?></a></li> 30 <li><a href="<?php echo esc_url( home_url( 'browse/new/' ) ); ?>" data-sort="new" <?php if ( 'new' == get_query_var('browse') ) { echo 'class="current"'; } ?>><?php _ex( 'Latest', 'themes', 'wporg-themes' ); ?></a></li> 30 31 </ul> 31 32 … … 46 47 </div> 47 48 48 <?php foreach ( get_theme_feature_list() as $feature_name => $features ) : ?>49 <?php foreach ( get_theme_feature_list() as $feature_name => $features ) : ?> 49 50 <div class="filter-group"> 50 51 <h4><?php echo esc_html( $feature_name ); ?></h4> … … 62 63 </div><!-- .wp-filter --> 63 64 64 <div class="theme-browser content-filterable ">65 <div class="theme-browser content-filterable <?php if ( ! $themes['themes'] ) { echo 'no-results'; } ?>"> 65 66 <div class="themes"> 66 67 <?php 67 while ( have_posts() ) : 68 the_post(); 69 get_template_part( 'content', is_single() ? 'single' : 'index' ); 70 endwhile; 68 if ( get_query_var('name') && !is_404() ) { 69 $theme = reset( $themes['themes'] ); 70 include __DIR__ . '/theme-single.php'; 71 } else { 72 foreach ( $themes['themes'] as $theme ) { 73 include __DIR__ . '/theme.php'; 74 } 71 75 72 the_posts_navigation( array( 73 'prev_text' => __( 'Next', 'wporg-themes' ), 74 'next_text' => __( 'Previous', 'wporg-themes' ), 75 ) ); 76 // Add the navigation between pages 77 if ( $themes['pages'] > 1 ) { 78 echo '<nav class="posts-navigation">'; 79 echo paginate_links( array( 80 'total' => $themes['pages'], 81 'mid_size' => 3, 82 ) ); 83 echo '</nav>'; 84 } 85 } 76 86 ?> 77 87 </div> 88 78 89 <p class="no-themes"><?php _e( 'No themes found. Try a different search.', 'wporg-themes' ); ?></p> 79 90 </div> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/js/theme.js
r1465 r1489 18 18 themes.utils = { 19 19 title: function ( item ) { 20 document.title = $( '<div/>' ).html( themes.data.settings.title.replace( '%s', item) ).text();20 document.title = $( '<div/>' ).html( themes.data.settings.title.replace( '%s', $( '<div/>' ).text(item).html() ) ).text(); 21 21 } 22 22 }; … … 216 216 instance = instance || 0; 217 217 218 // Themes per instance are set at 15218 // Themes per instance are set at 24 219 219 collection = _( collection.rest( themes.data.settings.postsPerPage * instance ) ); 220 220 collection = _( collection.first( themes.data.settings.postsPerPage ) ); … … 337 337 requires: true, 338 338 downloaded: true, 339 download Link: true,339 downloadlink: true, 340 340 last_updated: true, 341 341 homepage: true, … … 399 399 400 400 data.permalink = themes.data.settings.path + themes.router.baseUrl( data.slug ); 401 data.path = themes.data.settings.path; 401 402 402 403 // Render themes using the html template … … 491 492 492 493 // Make tags click-able and separated by a comma. 493 data.tags = _.map( data.tags, function( tag ) {494 return '<a href="' + themes.data.settings.path + themes.router.baseUrl( 'tags/' + tag.toLowerCase().replace( ' ', '-' )) + '">' + tag + '</a>';494 data.tags = _.map( data.tags, function( tag, slug ) { 495 return '<a href="' + themes.data.settings.path + themes.router.baseUrl( 'tags/' + slug ) + '">' + tag + '</a>'; 495 496 }).join( ', ' ); 497 498 data.path = themes.data.settings.path; 496 499 497 500 this.$el.html( this.html( data ) ); … … 1474 1477 themes.Router = Backbone.Router.extend({ 1475 1478 routes: { 1476 'browse/:sort /' : 'sort',1477 'tags/:tag /' : 'tag',1478 'search/:query /' : 'search',1479 'author/:author /': 'author',1480 ':slug /' : 'preview',1481 '' : 'sort'1479 'browse/:sort(/)' : 'sort', 1480 'tags/:tag(/)' : 'tag', 1481 'search/:query(/)' : 'search', 1482 'author/:author(/)': 'author', 1483 ':slug(/)' : 'preview', 1484 '' : 'sort' 1482 1485 }, 1483 1486 -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/js/theme.min.js
r1467 r1489 1 window.wp=window.wp||{},function( e){var t,i=wp.themes=wp.themes||{};i.data=_wpThemeSettings,t=i.data.l10n,_.extend(i,{model:{},view:{},routes:{},router:{},template:wp.template}),i.utils={title:function(t){document.title=e("<div/>").html(i.data.settings.title.replace("%s",t)).text()}},i.Model=Backbone.Model.extend({initialize:function(){var e;this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(e=this.get("sections").description,this.set({description:e}))}}),i.view.Appearance=wp.Backbone.View.extend({el:"#themes .theme-browser",window:e(window),page:0,initialize:function(e){_.bindAll(this,"scroller"),this.SearchView=e.SearchView?e.SearchView:i.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new i.view.Themes({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.find(".themes").remove(),this.$el.append(this.view.el).addClass("rendered")},searchContainer:"",search:function(){var i,s=this;i=new this.SearchView({collection:s.collection,parent:this}),i.render(),this.searchContainer.append(e.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+t.search+"</label>")).append(i.el)},scroller:function(){var e,t,i=this;e=this.window.scrollTop()+i.window.height(),t=i.$el.offset().top+i.$el.outerHeight(!1)-i.window.height(),t=Math.round(.9*t),e>t&&this.trigger("theme:scroll")}}),i.Collection=Backbone.Collection.extend({model:i.Model,terms:"",queries:[],currentQuery:{page:1,request:{}},count:!1,loadingThemes:!1,doSearch:function(e){this.terms!==e&&(this.terms=e,this.terms.length>0&&this.search(this.terms),""===this.terms&&this.reset(i.data.themes),this.trigger("update"))},search:function(t){var s,r,o,n,a,l;this.reset(i.data.themes,{silent:!0}),t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),t=t.replace(/ /g,")(?=.*"),s=new RegExp("^(?=.*"+t+").+","i"),r=this.filter(function(e){return n=e.get("name").replace(/(<([^>]+)>)/gi,""),a=e.get("description").replace(/(<([^>]+)>)/gi,""),l=e.get("author").replace(/(<([^>]+)>)/gi,""),o=_.union(n,e.get("id"),a,l,e.get("tags")),s.test(e.get("author"))&&t.length>2&&e.set("displayAuthor",!0),s.test(o)}),0===r.length?this.trigger("query:empty"):e("body").removeClass("no-results"),this.reset(r)},paginate:function(e){var t=this;return e=e||0,t=_(t.rest(i.data.settings.postsPerPage*e)),t=_(t.first(i.data.settings.postsPerPage))},query:function(t){var i,s,r,o=this.queries,n=this;if(this.currentQuery.request=t,i=_.find(o,function(e){return _.isEqual(e.request,t)}),s=_.has(t,"page"),s||(this.currentQuery.page=1),i||s){if(s)return this.apiCall(t,s).done(function(e){n.add(e.themes),n.trigger("query:success",e.info.results),n.loadingThemes=!1}).fail(function(){n.trigger("query:fail")});0===i.themes.length?n.trigger("query:empty"):e("body").removeClass("no-results"),_.isNumber(i.total)&&(this.count=i.total),this.reset(i.themes),i.total||(this.count=this.length),this.trigger("update"),this.trigger("query:success",this.count)}else i=this.apiCall(t).done(function(e){e.themes&&(n.reset(e.themes),r=e.info.results,o.push({themes:e.themes,request:t,total:r})),n.trigger("update"),n.trigger("query:success",r),e.themes&&0===e.themes.length&&n.trigger("query:empty")}).fail(function(){n.trigger("query:fail")})},apiCall:function(t,s){var r={type:"POST",url:"https://api.wordpress.org/themes/info/1.1/",jsonp:"callback",dataType:"jsonp",data:{action:"query_themes",request:_.extend({per_page:i.data.settings.postsPerPage,fields:{description:!0,sections:!1,tested:!0,requires:!0,downloaded:!0,downloadLink:!0,last_updated:!0,homepage:!0,theme_url:!0,parent:!0,tags:!0,rating:!0,ratings:!0,num_ratings:!0,extended_author:!0,photon_screenshots:!0}},t)},beforeSend:function(){s||e("body").addClass("loading-content").removeClass("no-results")}};return e.Deferred(function(t){e.ajax(r).done(function(e){t.resolveWith(this,[e])}).fail(function(){t.rejectWith(this,arguments)})}).promise()}}),i.view.Theme=wp.Backbone.View.extend({className:"theme",state:"grid",html:wp.themes.template("theme"),events:{click:"expand",keydown:"expand",touchend:"expand",keyup:"addFocus",touchmove:"preventExpand"},touchDrag:!1,render:function(){var e=this.model.toJSON();e.permalink=i.data.settings.path+i.router.baseUrl(e.slug),this.$el.html(this.html(e)).attr({tabindex:0,"aria-describedby":e.id+"-action "+e.id+"-name"})},addFocus:function(){var t=e(":focus").hasClass("theme")?e(":focus"):e(":focus").parents(".theme");e(".theme.focus").removeClass("focus"),t.addClass("focus")},expand:function(t){var s=this;return t=t||window.event,!0===t.metaKey&&"click"===t.type||"keydown"===t.type&&13!==t.which&&32!==t.which?void 0:this.touchDrag===!0?this.touchDrag=!1:void(e(t.target).is(".theme-actions a")||(i.focusedTheme=this.$el,this.trigger("theme:expand",s.model.cid),t.preventDefault()))},preventExpand:function(){this.touchDrag=!0}}),i.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .left":"previousTheme","click .right":"nextTheme","click .theme-actions .button-secondary":"preview","keydown .theme-actions .button-secondary":"preview","touchend .theme-actions .button-secondary":"preview"},html:i.template("theme-single"),render:function(){var e=this.model.toJSON(),t=new Date;t.setUTCFullYear(e.last_updated.substring(0,4),e.last_updated.substring(5,7)-1,e.last_updated.substring(8,10)),e.last_updated=t.toLocaleDateString(!1,{day:"numeric",month:"long",year:"numeric"}),e.is_outdated=t.setYear(t.getYear()+1902).valueOf()<(new Date).valueOf(),e.tags=_.map(e.tags,function(e){return'<a href="'+i.data.settings.path+i.router.baseUrl("tags/"+e.toLowerCase().replace(" ","-"))+'">'+e+"</a>"}).join(", "),this.$el.html(this.html(e)),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el),this.renderDownloadsGraph()},preview:function(t){var s,r,o=this;return this.touchDrag===!0?this.touchDrag=!1:void(e(t.target).hasClass("button-primary")||("keydown"!==t.type||13===t.which||32===t.which)&&("keydown"===t.type&&13!==t.which&&e(":focus").hasClass("button")||(t=t||window.event,t.preventDefault(),i.focusedTheme=this.$el,r=new i.view.Preview({model:this.model}),r.render(),this.setNavButtonsState(),r.$el.addClass(i.data.settings.isMobile?"wp-full-overlay collapsed":"wp-full-overlay expanded"),e(".theme-install-overlay").append(r.el),this.listenTo(r,"theme:next",function(){return this.trigger("theme:next"),s=o.model,_.isUndefined(o.current)||(s=o.current),o.current=o.model.collection.at(o.model.collection.indexOf(s)+1),_.isUndefined(o.current)?(o.options.parent.parent.trigger("theme:end"),o.current=s):(r.model=o.current,r.render(),this.setNavButtonsState(),void e(".next-theme").focus())}).listenTo(r,"theme:previous",function(){this.trigger("theme:previous"),s=o.model,0!==o.model.collection.indexOf(o.current)&&(_.isUndefined(o.current)||(s=o.current),o.current=o.model.collection.at(o.model.collection.indexOf(s)-1),_.isUndefined(o.current)||(r.model=o.current,r.render(),this.setNavButtonsState(),e(".previous-theme").focus()))}),this.listenTo(r,"preview:close",function(){o.current=o.model}))))},setNavButtonsState:function(){var t=e(".theme-install-overlay"),i=_.isUndefined(this.current)?this.model:this.current;0===this.model.collection.indexOf(i)&&t.find(".previous-theme").addClass("disabled"),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(i)+1))&&t.find(".next-theme").addClass("disabled")},containFocus:function(t){var i,s=window.event;("undefined"==typeof s||1===e(s.target).closest(".theme").length)&&_.delay(function(){e(".theme-wrap a.button-primary:visible").focus()},500),t.on("keydown.wp-themes",function(s){9===s.which&&(i=e(s.target),i.is("button.close")&&s.shiftKey?(t.find(".theme-tags a:last-child").focus(),s.preventDefault()):i.is(".theme-tags a:last-child")&&(t.find("button.close").focus(),s.preventDefault()))})},collapse:function(t){var s,r,o,n,a,l=this,c={};1!==i.data.themes.length&&(t=t||window.event,(e(t.target).is(".close")||27===t.keyCode)&&(e("body").addClass("closing-overlay"),this.$el.fadeOut(1,function(){e("body").removeClass("closing-overlay"),l.closeOverlay(),s=document.body.scrollTop,(r=i.Collection.prototype.currentQuery.request.author)?(i.router.navigate(i.router.baseUrl("author/"+r)),i.utils.title(r)):(o=i.Collection.prototype.currentQuery.request.search)?(i.router.navigate(i.router.baseUrl(i.router.searchPath+o)),i.utils.title(o)):(n=i.view.Installer.prototype.filtersChecked())?(i.router.navigate(i.router.baseUrl("tags/"+n.join("+"))),i.utils.title(_.each(n,function(t,i){n[i]=e('label[for="filter-id-'+t+'"]').text()}).join(", "))):(a=e(".filter-links .current"))&&(a.length||(a=e('.filter-links [data-sort="featured"]'),c={trigger:!0}),i.router.navigate(i.router.baseUrl(i.router.browsePath+a.data("sort")),c),i.utils.title(a.text())),document.body.scrollTop=s,i.focusedTheme&&i.focusedTheme.focus()})))},renderDownloadsGraph:function(){var t=this;e.getJSON("https://api.wordpress.org/stats/themes/1.0/downloads.php?slug="+t.model.get("id")+"&limit=260&callback=?",function(i){var s=new google.visualization.DataTable,r=0;s.addColumn("string",_wpThemeSettings.l10n.date),s.addColumn("number",_wpThemeSettings.l10n.downloads),e.each(i,function(e,t){s.addRow(),s.setValue(r,0,new Date(e).toLocaleDateString()),s.setValue(r,1,Number(t)),r++}),new google.visualization.ColumnChart(document.getElementById("theme-download-stats-"+t.model.get("id"))).draw(s,{colors:["#253578"],legend:{position:"none"},titlePosition:"in",axisTitlesPosition:"in",chartArea:{height:280,left:35,width:"98%"},hAxis:{textStyle:{color:"black",fontSize:9}},vAxis:{format:"###,###",textPosition:"out",viewWindowMode:"explicit",viewWindow:{min:0}},bar:{groupWidth:s.getNumberOfRows()>100?"100%":null},height:350})})},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled"),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled")},closeOverlay:function(){e("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("theme:collapse")},nextTheme:function(){var e=this;return e.trigger("theme:next",e.model.cid),!1},previousTheme:function(){var e=this;return e.trigger("theme:previous",e.model.cid),!1},screenshotCheck:function(e){var t=new Image;t.src=e.find(".screenshot img").attr("src")}}),i.view.Preview=i.view.Details.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .previous-theme":"previousTheme","click .next-theme":"nextTheme",keyup:"keyEvent"},html:i.template("theme-preview"),render:function(){var t=this.model.toJSON();this.$el.html(this.html(t)),i.router.navigate(i.router.baseUrl(i.router.themePath+this.model.get("id"))),this.$el.fadeIn(200,function(){e("body").addClass("theme-installer-active full-overlay-active"),e(".close-full-overlay").focus()})},close:function(){return this.$el.fadeOut(200,function(){e("body").removeClass("theme-installer-active full-overlay-active"),i.focusedTheme&&i.focusedTheme.focus()}),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),i.router.navigate(i.router.baseUrl(i.router.themePath+this.model.get("id"))),!1},collapse:function(){return this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},keyEvent:function(){return 27===event.keyCode&&(this.undelegateEvents(),this.close()),39===event.keyCode&&_.once(this.nextTheme()),37===event.keyCode&&this.previousTheme(),!1}}),i.view.Themes=wp.Backbone.View.extend({className:"themes",$overlay:e("div.theme-overlay"),index:0,count:e(".wp-filter .theme-count"),initialize:function(t){var i=this;this.parent=t.parent,this.setView("grid"),this.listenTo(i.collection,"update",function(){i.parent.page=0,i.render(this)}),this.listenTo(i.collection,"query:success",function(e){i.count.text(_.isNumber(e)?e:i.collection.length)}),this.listenTo(i.collection,"query:empty",function(){e("body").addClass("no-results")}),this.listenTo(this.parent,"theme:scroll",function(){i.renderThemes(i.parent.page)}),this.listenTo(this.parent,"theme:close",function(){i.overlay&&i.overlay.closeOverlay()}),e("body").on("keyup",function(e){i.overlay&&(39===e.keyCode&&i.overlay.nextTheme(),37===e.keyCode&&i.overlay.previousTheme(),27===e.keyCode&&i.overlay.collapse(e))})},render:function(){this.$el.empty(),1===i.data.themes.length&&(this.singleTheme=new i.view.Details({model:this.collection.models[0]}),this.singleTheme.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleTheme.el)),this.options.collection.size()>0&&this.renderThemes(this.parent.page),this.count.text(this.collection.count?this.collection.count:this.collection.length)},renderThemes:function(t){var s=this;return s.instance=s.collection.paginate(t),0===s.instance.size()?void this.parent.trigger("theme:end"):(t>=1&&e(".add-new-theme").remove(),s.instance.each(function(e){s.theme=new i.view.Theme({model:e,parent:s}),s.theme.render(),s.$el.append(s.theme.el),s.listenTo(s.theme,"theme:expand",s.expand,s)}),void this.parent.page++)},setView:function(e){return e},expand:function(t){var s=this;this.model=s.collection.get(t),i.router.navigate(i.router.baseUrl(i.router.themePath+this.model.id)),i.utils.title(this.model.attributes.name),this.setView("detail"),e("body").addClass("modal-open"),this.overlay=new i.view.Details({model:s.model}),this.overlay.render(),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"theme:next",function(){s.next([s.model.cid]),e(".theme-header").find(".right").focus()}).listenTo(this.overlay,"theme:previous",function(){s.previous([s.model.cid]),e(".theme-header").find(".left").focus()})},next:function(e){var t,i,s=this;t=s.collection.get(e[0]),i=s.collection.at(s.collection.indexOf(t)+1),void 0!==i&&s.theme.trigger("theme:expand",i.cid)},previous:function(e){var t,i,s=this;t=s.collection.get(e[0]),i=s.collection.at(s.collection.indexOf(t)-1),void 0!==i&&s.theme.trigger("theme:expand",i.cid)}}),i.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:t.searchPlaceholder,type:"search"},events:{keyup:"search",search:"search"},initialize:function(e){this.parent=e.parent,this.listenTo(this.parent,"theme:close",function(){this.searching=!1})},search:function(e){("keyup"!==e.type||9!==e.which&&16!==e.which)&&(this.collection=this.options.parent.view.collection,"keyup"===e.type&&27===e.which&&(e.target.value=""),_.debounce(_.bind(this.doSearch,this),300)(e.target.value))},doSearch:_.debounce(function(t){var s={};i.view.Installer.prototype.clearFilters(jQuery.Event("click")),s.search=t,"author:"===t.substring(0,7)&&(s.search="",s.author=t.slice(7)),"tag:"===t.substring(0,4)&&(s.search="",s.tag=[t.slice(4)]),e(".filter-links li > a.current").removeClass("current"),e("body").removeClass("show-filters filters-applied"),t?(i.utils.title(t),i.router.navigate(i.router.baseUrl(i.router.searchPath+t),{replace:!0})):(delete s.search,s.browse="featured",i.utils.title(e('.filter-links [data-sort="featured"]').text()),i.router.navigate(i.router.baseUrl(i.router.browsePath+"featured"),{replace:!0})),this.collection.query(s)},300)}),i.view.Installer=i.view.Appearance.extend({el:"#themes",events:{"click .filter-links li > a":"onSort","click .theme-filter":"onFilter","click .drawer-toggle":"moreFilters","click .filter-drawer .apply-filters":"applyFilters",'click .filter-group [type="checkbox"]':"addFilter","click .filter-drawer .clear-filters":"clearFilters","click .filtered-by":"backToFilters"},activeClass:"current",searchContainer:e(".wp-filter .search-form"),render:function(){var s=this;this.search(),this.collection=new i.Collection,this.listenTo(this,"theme:end",function(){s.collection.loadingThemes||(s.collection.loadingThemes=!0,s.collection.currentQuery.page++,_.extend(s.collection.currentQuery.request,{page:s.collection.currentQuery.page}),s.collection.query(s.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){e("body").removeClass("loading-content"),e(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){e("body").removeClass("loading-content"),e(".theme-browser").find("div.error").remove(),e(".theme-browser").find("div.themes").before('<div class="error"><p>'+t.error+"</p></div>")}),this.view&&this.view.remove(),this.view=new i.view.Themes({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(e){this.collection.query({browse:e})},onSort:function(t){var s=e(t.target),r=s.data("sort");t.preventDefault(),e("body").removeClass("filters-applied show-filters"),s.hasClass(this.activeClass)||(this.sort(r),i.router.navigate(i.router.baseUrl(i.router.browsePath+r)))},sort:function(t){var s=e('.filter-links [data-sort="'+t+'"]'),r=this;r.clearSearch(),_.each(e(".filter-group").find(":checkbox").filter(":checked"),function(t){return e(t).prop("checked",!1),r.filtersChecked()}),e(".filter-links li > a, .theme-filter").removeClass(this.activeClass),s.addClass(this.activeClass),i.utils.title(s.text()),this.browse(t)},onFilter:function(t){var i,s=e(t.target),r=s.data("filter");s.hasClass(this.activeClass)||(e(".filter-links li > a, .theme-section").removeClass(this.activeClass),s.addClass(this.activeClass),r&&(r=_.union(r,this.filtersChecked()),i={tag:[r]},this.collection.query(i)))},addFilter:function(){this.filtersChecked()},applyFilters:function(t){var s,r=[],o=this.filtersChecked(),n={tag:o},a=e(".filtered-by .tags");t&&t.preventDefault(),e("body").addClass("filters-applied"),e(".filter-links li > a.current").removeClass("current"),a.empty(),_.each(o,function(t){s=e('label[for="filter-id-'+t+'"]').text(),r.push(s),a.append('<span class="tag">'+s+"</span>")}),i.router.navigate(i.router.baseUrl("tags/"+o.join("+"))),i.utils.title(r.join(", ")),this.collection.query(n)},filtersChecked:function(){var t=e(".filter-group").find(":checkbox").filter(":checked"),i=e(".filter-drawer"),s=[];return _.each(t,function(t){s.push(e(t).prop("value"))}),0===s.length?(i.find(".apply-filters").prop("disabled",!0).find("span").text(""),i.find(".clear-filters").hide(),e("body").removeClass("filters-applied"),!1):(i.find(".apply-filters").prop("disabled",!1).find("span").text(s.length),i.find(".clear-filters").css("display","inline-block"),s)},moreFilters:function(t){return t.preventDefault(),e("body").hasClass("filters-applied")?this.backToFilters():e("body").hasClass("show-filters")&&this.filtersChecked()?this.addFilter():(this.clearSearch(),void e("body").toggleClass("show-filters"))},clearFilters:function(t){var i=e(".filter-group").find(":checkbox"),s=this;t.preventDefault(),_.each(i.filter(":checked"),function(t){return e(t).prop("checked",!1),s.filtersChecked()})},backToFilters:function(t){t&&t.preventDefault(),e("body").removeClass("filters-applied")},clearSearch:function(){e("#wp-filter-search-input").val("")}}),i.Router=Backbone.Router.extend({routes:{"browse/:sort/":"sort","tags/:tag/":"tag","search/:query/":"search","author/:author/":"author",":slug/":"preview","":"sort"},baseUrl:function(e){return 0!==e.length&&(e+="/"),e},themePath:"",browsePath:"browse/",searchPath:"search/",search:function(t){e(".wp-filter-search").val(t)},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments),"object"==typeof _gaq&&_gaq.push(["_trackPageview",i.data.settings.path+arguments[0]])}}),i.Run={init:function(){this.view=new i.view.Installer({section:"featured",SearchView:i.view.Search}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:i.data.settings.path,pushState:!0,hashChange:!1})},routes:function(){var t=this,s={};i.router=new i.Router,i.router.on("route:preview",function(e){t.view.collection.queries.push(i.data.query),s.theme=e,t.view.collection.query(s),t.view.view.expand(e)}),i.router.on("route:sort",function(e){t.view.collection.queries.push(i.data.query),e||(e="featured"),t.view.sort(e),t.view.trigger("theme:close")}),i.router.on("route:search",function(){t.view.collection.queries.push(i.data.query),e(".wp-filter-search").focus().trigger("keyup"),t.view.trigger("theme:close")}),i.router.on("route:tag",function(s){t.view.collection.queries.push(i.data.query),_.each(s.split("+"),function(t){e("#filter-id-"+t).prop("checked",!0)}),e("body").removeClass("show-filters").addClass("show-filters"),t.view.applyFilters(),t.view.trigger("theme:close")}),i.router.on("route:author",function(e){t.view.collection.queries.push(i.data.query),s.author=e,t.view.collection.query(s),i.utils.title(e),t.view.trigger("theme:close")})}},e(function(){i.Run.init()})}(jQuery),function(e){e.load("visualization","1",{packages:["corechart"]})}(google);1 window.wp=window.wp||{},function(a){var b,c=wp.themes=wp.themes||{};c.data=_wpThemeSettings,b=c.data.l10n,_.extend(c,{model:{},view:{},routes:{},router:{},template:wp.template}),c.utils={title:function(b){document.title=a("<div/>").html(c.data.settings.title.replace("%s",a("<div/>").text(b).html())).text()}},c.Model=Backbone.Model.extend({initialize:function(){var a;this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(a=this.get("sections").description,this.set({description:a}))}}),c.view.Appearance=wp.Backbone.View.extend({el:"#themes .theme-browser",window:a(window),page:0,initialize:function(a){_.bindAll(this,"scroller"),this.SearchView=a.SearchView?a.SearchView:c.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new c.view.Themes({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.find(".themes").remove(),this.$el.append(this.view.el).addClass("rendered")},searchContainer:"",search:function(){var c,d=this;c=new this.SearchView({collection:d.collection,parent:this}),c.render(),this.searchContainer.append(a.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+b.search+"</label>")).append(c.el)},scroller:function(){var a,b,c=this;a=this.window.scrollTop()+c.window.height(),b=c.$el.offset().top+c.$el.outerHeight(!1)-c.window.height(),b=Math.round(.9*b),a>b&&this.trigger("theme:scroll")}}),c.Collection=Backbone.Collection.extend({model:c.Model,terms:"",queries:[],currentQuery:{page:1,request:{}},count:!1,loadingThemes:!1,doSearch:function(a){this.terms!==a&&(this.terms=a,this.terms.length>0&&this.search(this.terms),""===this.terms&&this.reset(c.data.themes),this.trigger("update"))},search:function(b){var d,e,f,g,h,i;this.reset(c.data.themes,{silent:!0}),b=b.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),b=b.replace(/ /g,")(?=.*"),d=new RegExp("^(?=.*"+b+").+","i"),e=this.filter(function(a){return g=a.get("name").replace(/(<([^>]+)>)/gi,""),h=a.get("description").replace(/(<([^>]+)>)/gi,""),i=a.get("author").replace(/(<([^>]+)>)/gi,""),f=_.union(g,a.get("id"),h,i,a.get("tags")),d.test(a.get("author"))&&b.length>2&&a.set("displayAuthor",!0),d.test(f)}),0===e.length?this.trigger("query:empty"):a("body").removeClass("no-results"),this.reset(e)},paginate:function(a){var b=this;return a=a||0,b=_(b.rest(c.data.settings.postsPerPage*a)),b=_(b.first(c.data.settings.postsPerPage))},query:function(b){var c,d,e,f=this.queries,g=this;if(this.currentQuery.request=b,c=_.find(f,function(a){return _.isEqual(a.request,b)}),d=_.has(b,"page"),d||(this.currentQuery.page=1),c||d){if(d)return this.apiCall(b,d).done(function(a){g.add(a.themes),g.trigger("query:success",a.info.results),g.loadingThemes=!1}).fail(function(){g.trigger("query:fail")});0===c.themes.length?g.trigger("query:empty"):a("body").removeClass("no-results"),_.isNumber(c.total)&&(this.count=c.total),this.reset(c.themes),c.total||(this.count=this.length),this.trigger("update"),this.trigger("query:success",this.count)}else c=this.apiCall(b).done(function(a){a.themes&&(g.reset(a.themes),e=a.info.results,f.push({themes:a.themes,request:b,total:e})),g.trigger("update"),g.trigger("query:success",e),a.themes&&0===a.themes.length&&g.trigger("query:empty")}).fail(function(){g.trigger("query:fail")})},apiCall:function(b,d){var e={type:"POST",url:"https://api.wordpress.org/themes/info/1.1/",jsonp:"callback",dataType:"jsonp",data:{action:"query_themes",request:_.extend({per_page:c.data.settings.postsPerPage,fields:{description:!0,sections:!1,tested:!0,requires:!0,downloaded:!0,downloadlink:!0,last_updated:!0,homepage:!0,theme_url:!0,parent:!0,tags:!0,rating:!0,ratings:!0,num_ratings:!0,extended_author:!0,photon_screenshots:!0}},b)},beforeSend:function(){d||a("body").addClass("loading-content").removeClass("no-results")}};return a.Deferred(function(b){a.ajax(e).done(function(a){b.resolveWith(this,[a])}).fail(function(){b.rejectWith(this,arguments)})}).promise()}}),c.view.Theme=wp.Backbone.View.extend({className:"theme",state:"grid",html:wp.themes.template("theme"),events:{click:"expand",keydown:"expand",touchend:"expand",keyup:"addFocus",touchmove:"preventExpand"},touchDrag:!1,render:function(){var a=this.model.toJSON();a.permalink=c.data.settings.path+c.router.baseUrl(a.slug),a.path=c.data.settings.path,this.$el.html(this.html(a)).attr({tabindex:0,"aria-describedby":a.id+"-action "+a.id+"-name"})},addFocus:function(){var b=a(":focus").hasClass("theme")?a(":focus"):a(":focus").parents(".theme");a(".theme.focus").removeClass("focus"),b.addClass("focus")},expand:function(b){var d=this;return b=b||window.event,!0===b.metaKey&&"click"===b.type||"keydown"===b.type&&13!==b.which&&32!==b.which?void 0:this.touchDrag===!0?this.touchDrag=!1:void(a(b.target).is(".theme-actions a")||(c.focusedTheme=this.$el,this.trigger("theme:expand",d.model.cid),b.preventDefault()))},preventExpand:function(){this.touchDrag=!0}}),c.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .left":"previousTheme","click .right":"nextTheme","click .theme-actions .button-secondary":"preview","keydown .theme-actions .button-secondary":"preview","touchend .theme-actions .button-secondary":"preview"},html:c.template("theme-single"),render:function(){var a=this.model.toJSON(),b=new Date;b.setUTCFullYear(a.last_updated.substring(0,4),a.last_updated.substring(5,7)-1,a.last_updated.substring(8,10)),a.last_updated=b.toLocaleDateString(!1,{day:"numeric",month:"long",year:"numeric"}),a.is_outdated=b.setYear(b.getYear()+1902).valueOf()<(new Date).valueOf(),a.tags=_.map(a.tags,function(a,b){return'<a href="'+c.data.settings.path+c.router.baseUrl("tags/"+b)+'">'+a+"</a>"}).join(", "),a.path=c.data.settings.path,this.$el.html(this.html(a)),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el),this.renderDownloadsGraph()},preview:function(b){var d,e,f=this;return this.touchDrag===!0?this.touchDrag=!1:void(a(b.target).hasClass("button-primary")||("keydown"!==b.type||13===b.which||32===b.which)&&("keydown"===b.type&&13!==b.which&&a(":focus").hasClass("button")||(b=b||window.event,b.preventDefault(),c.focusedTheme=this.$el,e=new c.view.Preview({model:this.model}),e.render(),this.setNavButtonsState(),e.$el.addClass(c.data.settings.isMobile?"wp-full-overlay collapsed":"wp-full-overlay expanded"),a(".theme-install-overlay").append(e.el),this.listenTo(e,"theme:next",function(){return this.trigger("theme:next"),d=f.model,_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)+1),_.isUndefined(f.current)?(f.options.parent.parent.trigger("theme:end"),f.current=d):(e.model=f.current,e.render(),this.setNavButtonsState(),void a(".next-theme").focus())}).listenTo(e,"theme:previous",function(){this.trigger("theme:previous"),d=f.model,0!==f.model.collection.indexOf(f.current)&&(_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)-1),_.isUndefined(f.current)||(e.model=f.current,e.render(),this.setNavButtonsState(),a(".previous-theme").focus()))}),this.listenTo(e,"preview:close",function(){f.current=f.model}))))},setNavButtonsState:function(){var b=a(".theme-install-overlay"),c=_.isUndefined(this.current)?this.model:this.current;0===this.model.collection.indexOf(c)&&b.find(".previous-theme").addClass("disabled"),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(c)+1))&&b.find(".next-theme").addClass("disabled")},containFocus:function(b){var c,d=window.event;("undefined"==typeof d||1===a(d.target).closest(".theme").length)&&_.delay(function(){a(".theme-wrap a.button-primary:visible").focus()},500),b.on("keydown.wp-themes",function(d){9===d.which&&(c=a(d.target),c.is("button.close")&&d.shiftKey?(b.find(".theme-tags a:last-child").focus(),d.preventDefault()):c.is(".theme-tags a:last-child")&&(b.find("button.close").focus(),d.preventDefault()))})},collapse:function(b){var d,e,f,g,h,i=this,j={};1!==c.data.themes.length&&(b=b||window.event,(a(b.target).is(".close")||27===b.keyCode)&&(a("body").addClass("closing-overlay"),this.$el.fadeOut(1,function(){a("body").removeClass("closing-overlay"),i.closeOverlay(),d=document.body.scrollTop,(e=c.Collection.prototype.currentQuery.request.author)?(c.router.navigate(c.router.baseUrl("author/"+e)),c.utils.title(e)):(f=c.Collection.prototype.currentQuery.request.search)?(c.router.navigate(c.router.baseUrl(c.router.searchPath+f)),c.utils.title(f)):(g=c.view.Installer.prototype.filtersChecked())?(c.router.navigate(c.router.baseUrl("tags/"+g.join("+"))),c.utils.title(_.each(g,function(b,c){g[c]=a('label[for="filter-id-'+b+'"]').text()}).join(", "))):(h=a(".filter-links .current"))&&(h.length||(h=a('.filter-links [data-sort="featured"]'),j={trigger:!0}),c.router.navigate(c.router.baseUrl(c.router.browsePath+h.data("sort")),j),c.utils.title(h.text())),document.body.scrollTop=d,c.focusedTheme&&c.focusedTheme.focus()})))},renderDownloadsGraph:function(){var b=this;a.getJSON("https://api.wordpress.org/stats/themes/1.0/downloads.php?slug="+b.model.get("id")+"&limit=260&callback=?",function(c){var d=new google.visualization.DataTable,e=0;d.addColumn("string",_wpThemeSettings.l10n.date),d.addColumn("number",_wpThemeSettings.l10n.downloads),a.each(c,function(a,b){d.addRow(),d.setValue(e,0,new Date(a).toLocaleDateString()),d.setValue(e,1,Number(b)),e++}),new google.visualization.ColumnChart(document.getElementById("theme-download-stats-"+b.model.get("id"))).draw(d,{colors:["#253578"],legend:{position:"none"},titlePosition:"in",axisTitlesPosition:"in",chartArea:{height:280,left:35,width:"98%"},hAxis:{textStyle:{color:"black",fontSize:9}},vAxis:{format:"###,###",textPosition:"out",viewWindowMode:"explicit",viewWindow:{min:0}},bar:{groupWidth:d.getNumberOfRows()>100?"100%":null},height:350})})},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled"),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled")},closeOverlay:function(){a("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("theme:collapse")},nextTheme:function(){var a=this;return a.trigger("theme:next",a.model.cid),!1},previousTheme:function(){var a=this;return a.trigger("theme:previous",a.model.cid),!1},screenshotCheck:function(a){var b=new Image;b.src=a.find(".screenshot img").attr("src")}}),c.view.Preview=c.view.Details.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .previous-theme":"previousTheme","click .next-theme":"nextTheme",keyup:"keyEvent"},html:c.template("theme-preview"),render:function(){var b=this.model.toJSON();this.$el.html(this.html(b)),c.router.navigate(c.router.baseUrl(c.router.themePath+this.model.get("id"))),this.$el.fadeIn(200,function(){a("body").addClass("theme-installer-active full-overlay-active"),a(".close-full-overlay").focus()})},close:function(){return this.$el.fadeOut(200,function(){a("body").removeClass("theme-installer-active full-overlay-active"),c.focusedTheme&&c.focusedTheme.focus()}),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),c.router.navigate(c.router.baseUrl(c.router.themePath+this.model.get("id"))),!1},collapse:function(){return this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},keyEvent:function(){return 27===event.keyCode&&(this.undelegateEvents(),this.close()),39===event.keyCode&&_.once(this.nextTheme()),37===event.keyCode&&this.previousTheme(),!1}}),c.view.Themes=wp.Backbone.View.extend({className:"themes",$overlay:a("div.theme-overlay"),index:0,count:a(".wp-filter .theme-count"),initialize:function(b){var c=this;this.parent=b.parent,this.setView("grid"),this.listenTo(c.collection,"update",function(){c.parent.page=0,c.render(this)}),this.listenTo(c.collection,"query:success",function(a){c.count.text(_.isNumber(a)?a:c.collection.length)}),this.listenTo(c.collection,"query:empty",function(){a("body").addClass("no-results")}),this.listenTo(this.parent,"theme:scroll",function(){c.renderThemes(c.parent.page)}),this.listenTo(this.parent,"theme:close",function(){c.overlay&&c.overlay.closeOverlay()}),a("body").on("keyup",function(a){c.overlay&&(39===a.keyCode&&c.overlay.nextTheme(),37===a.keyCode&&c.overlay.previousTheme(),27===a.keyCode&&c.overlay.collapse(a))})},render:function(){this.$el.empty(),1===c.data.themes.length&&(this.singleTheme=new c.view.Details({model:this.collection.models[0]}),this.singleTheme.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleTheme.el)),this.options.collection.size()>0&&this.renderThemes(this.parent.page),this.count.text(this.collection.count?this.collection.count:this.collection.length)},renderThemes:function(b){var d=this;return d.instance=d.collection.paginate(b),0===d.instance.size()?void this.parent.trigger("theme:end"):(b>=1&&a(".add-new-theme").remove(),d.instance.each(function(a){d.theme=new c.view.Theme({model:a,parent:d}),d.theme.render(),d.$el.append(d.theme.el),d.listenTo(d.theme,"theme:expand",d.expand,d)}),void this.parent.page++)},setView:function(a){return a},expand:function(b){var d=this;this.model=d.collection.get(b),c.router.navigate(c.router.baseUrl(c.router.themePath+this.model.id)),c.utils.title(this.model.attributes.name),this.setView("detail"),a("body").addClass("modal-open"),this.overlay=new c.view.Details({model:d.model}),this.overlay.render(),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"theme:next",function(){d.next([d.model.cid]),a(".theme-header").find(".right").focus()}).listenTo(this.overlay,"theme:previous",function(){d.previous([d.model.cid]),a(".theme-header").find(".left").focus()})},next:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)+1),void 0!==c&&d.theme.trigger("theme:expand",c.cid)},previous:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)-1),void 0!==c&&d.theme.trigger("theme:expand",c.cid)}}),c.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:b.searchPlaceholder,type:"search"},events:{keyup:"search",search:"search"},initialize:function(a){this.parent=a.parent,this.listenTo(this.parent,"theme:close",function(){this.searching=!1})},search:function(a){("keyup"!==a.type||9!==a.which&&16!==a.which)&&(this.collection=this.options.parent.view.collection,"keyup"===a.type&&27===a.which&&(a.target.value=""),_.debounce(_.bind(this.doSearch,this),300)(a.target.value))},doSearch:_.debounce(function(b){var d={};c.view.Installer.prototype.clearFilters(jQuery.Event("click")),d.search=b,"author:"===b.substring(0,7)&&(d.search="",d.author=b.slice(7)),"tag:"===b.substring(0,4)&&(d.search="",d.tag=[b.slice(4)]),a(".filter-links li > a.current").removeClass("current"),a("body").removeClass("show-filters filters-applied"),b?(c.utils.title(b),c.router.navigate(c.router.baseUrl(c.router.searchPath+b),{replace:!0})):(delete d.search,d.browse="featured",c.utils.title(a('.filter-links [data-sort="featured"]').text()),c.router.navigate(c.router.baseUrl(c.router.browsePath+"featured"),{replace:!0})),this.collection.query(d)},300)}),c.view.Installer=c.view.Appearance.extend({el:"#themes",events:{"click .filter-links li > a":"onSort","click .theme-filter":"onFilter","click .drawer-toggle":"moreFilters","click .filter-drawer .apply-filters":"applyFilters",'click .filter-group [type="checkbox"]':"addFilter","click .filter-drawer .clear-filters":"clearFilters","click .filtered-by":"backToFilters"},activeClass:"current",searchContainer:a(".wp-filter .search-form"),render:function(){var d=this;this.search(),this.collection=new c.Collection,this.listenTo(this,"theme:end",function(){d.collection.loadingThemes||(d.collection.loadingThemes=!0,d.collection.currentQuery.page++,_.extend(d.collection.currentQuery.request,{page:d.collection.currentQuery.page}),d.collection.query(d.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove(),a(".theme-browser").find("div.themes").before('<div class="error"><p>'+b.error+"</p></div>")}),this.view&&this.view.remove(),this.view=new c.view.Themes({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(a){this.collection.query({browse:a})},onSort:function(b){var d=a(b.target),e=d.data("sort");b.preventDefault(),a("body").removeClass("filters-applied show-filters"),d.hasClass(this.activeClass)||(this.sort(e),c.router.navigate(c.router.baseUrl(c.router.browsePath+e)))},sort:function(b){var d=a('.filter-links [data-sort="'+b+'"]'),e=this;e.clearSearch(),_.each(a(".filter-group").find(":checkbox").filter(":checked"),function(b){return a(b).prop("checked",!1),e.filtersChecked()}),a(".filter-links li > a, .theme-filter").removeClass(this.activeClass),d.addClass(this.activeClass),c.utils.title(d.text()),this.browse(b)},onFilter:function(b){var c,d=a(b.target),e=d.data("filter");d.hasClass(this.activeClass)||(a(".filter-links li > a, .theme-section").removeClass(this.activeClass),d.addClass(this.activeClass),e&&(e=_.union(e,this.filtersChecked()),c={tag:[e]},this.collection.query(c)))},addFilter:function(){this.filtersChecked()},applyFilters:function(b){var d,e=[],f=this.filtersChecked(),g={tag:f},h=a(".filtered-by .tags");b&&b.preventDefault(),a("body").addClass("filters-applied"),a(".filter-links li > a.current").removeClass("current"),h.empty(),_.each(f,function(b){d=a('label[for="filter-id-'+b+'"]').text(),e.push(d),h.append('<span class="tag">'+d+"</span>")}),c.router.navigate(c.router.baseUrl("tags/"+f.join("+"))),c.utils.title(e.join(", ")),this.collection.query(g)},filtersChecked:function(){var b=a(".filter-group").find(":checkbox").filter(":checked"),c=a(".filter-drawer"),d=[];return _.each(b,function(b){d.push(a(b).prop("value"))}),0===d.length?(c.find(".apply-filters").prop("disabled",!0).find("span").text(""),c.find(".clear-filters").hide(),a("body").removeClass("filters-applied"),!1):(c.find(".apply-filters").prop("disabled",!1).find("span").text(d.length),c.find(".clear-filters").css("display","inline-block"),d)},moreFilters:function(b){return b.preventDefault(),a("body").hasClass("filters-applied")?this.backToFilters():a("body").hasClass("show-filters")&&this.filtersChecked()?this.addFilter():(this.clearSearch(),void a("body").toggleClass("show-filters"))},clearFilters:function(b){var c=a(".filter-group").find(":checkbox"),d=this;b.preventDefault(),_.each(c.filter(":checked"),function(b){return a(b).prop("checked",!1),d.filtersChecked()})},backToFilters:function(b){b&&b.preventDefault(),a("body").removeClass("filters-applied")},clearSearch:function(){a("#wp-filter-search-input").val("")}}),c.Router=Backbone.Router.extend({routes:{"browse/:sort(/)":"sort","tags/:tag(/)":"tag","search/:query(/)":"search","author/:author(/)":"author",":slug(/)":"preview","":"sort"},baseUrl:function(a){return 0!==a.length&&(a+="/"),a},themePath:"",browsePath:"browse/",searchPath:"search/",search:function(b){a(".wp-filter-search").val(b)},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments),"object"==typeof _gaq&&_gaq.push(["_trackPageview",c.data.settings.path+arguments[0]])}}),c.Run={init:function(){this.view=new c.view.Installer({section:"featured",SearchView:c.view.Search}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:c.data.settings.path,pushState:!0,hashChange:!1})},routes:function(){var b=this,d={};c.router=new c.Router,c.router.on("route:preview",function(a){b.view.collection.queries.push(c.data.query),d.theme=a,b.view.collection.query(d),b.view.view.expand(a)}),c.router.on("route:sort",function(a){b.view.collection.queries.push(c.data.query),a||(a="featured"),b.view.sort(a),b.view.trigger("theme:close")}),c.router.on("route:search",function(){b.view.collection.queries.push(c.data.query),a(".wp-filter-search").focus().trigger("keyup"),b.view.trigger("theme:close")}),c.router.on("route:tag",function(d){b.view.collection.queries.push(c.data.query),_.each(d.split("+"),function(b){a("#filter-id-"+b).prop("checked",!0)}),a("body").removeClass("show-filters").addClass("show-filters"),b.view.applyFilters(),b.view.trigger("theme:close")}),c.router.on("route:author",function(a){b.view.collection.queries.push(c.data.query),d.author=a,b.view.collection.query(d),c.utils.title(a),b.view.trigger("theme:close")})}},a(function(){c.Run.init()})}(jQuery),function(a){a.load("visualization","1",{packages:["corechart"]})}(google); -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/style.css
r1451 r1489 1553 1553 font-size: 18px; 1554 1554 overflow: hidden; 1555 } 1556 1557 .posts-navigation .nav-previous { 1558 float: right; 1559 } 1560 1561 .posts-navigation .nav-next { 1562 float: left; 1555 text-align: center; 1563 1556 } 1564 1557 … … 1566 1559 padding: 8px 10px; 1567 1560 display: inline-block; 1568 }1569 1570 .posts-navigation .nav-previous a:after {1571 content: '\2192';1572 margin: 0 -10px 0 5px;1573 }1574 1575 .posts-navigation .nav-next a:before {1576 content: '\2190';1577 margin: 0 5px 0 -10px;1578 vertical-align: middle;1579 1561 } 1580 1562 -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/theme-single.php
r1483 r1489 1 < script id="tmpl-theme-single" type="text/template">1 <div> 2 2 <div class="theme-navigation"> 3 < button class="close"><?php _e( 'Return to Themes List', 'wporg-themes' ); ?></button>3 <a class="close" href="<?php echo home_url('/'); ?>"><?php _e( 'Return to Themes List', 'wporg-themes' ); ?></a> 4 4 <div class="navigation post-navigation"> 5 <button class="left dashicons dashicons-no "><span class="screen-reader-text"><?php _e( 'Show previous theme', 'wporg-themes' ); ?></span></button>6 <button class="right dashicons dashicons-no "><span class="screen-reader-text"><?php _e( 'Show next theme', 'wporg-themes' ); ?></span></button>5 <button class="left dashicons dashicons-no disabled"><span class="screen-reader-text"><?php _e( 'Show previous theme', 'wporg-themes' ); ?></span></button> 6 <button class="right dashicons dashicons-no disabled"><span class="screen-reader-text"><?php _e( 'Show next theme', 'wporg-themes' ); ?></span></button> 7 7 </div> 8 8 </div> 9 9 <div class="theme-wrap"> 10 10 <div class="theme-about hentry" itemscope itemtype="http://schema.org/CreativeWork"> 11 < # if ( data.is_outdated ) { #>11 <?php if ( time() - strtotime( $theme->last_updated ) > 2 * YEAR_IN_SECONDS ) { ?> 12 12 <div class="theme-notice notice notice-warning"> 13 13 <p><?php _e( 'This theme <strong>hasn’t been updated in over 2 years</strong>. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.', 'wporg-themes' ); ?></p> 14 14 </div><!-- .theme-notice --> 15 < # } #>15 <?php } ?> 16 16 17 17 <div> 18 <h3 class="theme-name entry-title" itemprop="name"> {{{ data.name }}}</h3>19 <h4 class="theme-author"><?php printf( _x( 'By %s', 'theme author', 'wporg-themes' ), '<a href="https://wordpress.org/themes/author/ {{ data.author.user_nicename }}/"><span class="author" itemprop="author">{{{ data.author.display_name }}}</span></a>' ); ?></h4>18 <h3 class="theme-name entry-title" itemprop="name"><?php echo esc_html( $theme->name ); ?></h3> 19 <h4 class="theme-author"><?php printf( _x( 'By %s', 'theme author', 'wporg-themes' ), '<a href="https://wordpress.org/themes/author/' . $theme->author->user_nicename . '/"><span class="author" itemprop="author">' . esc_html( $theme->author->display_name ) . '</span></a>' ); ?></h4> 20 20 </div> 21 21 22 22 <div class="theme-head"> 23 23 <div class="theme-actions clear"> 24 <a href=" {{{ data.preview_url }}}" class="button button-secondary alignleft"><?php _e( 'Preview', 'wporg-themes' ); ?></a>25 <a href=" //downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip" class="button button-primary alignright"><?php _e( 'Download', 'wporg-themes' ); ?></a>24 <a href="<?php echo esc_url( $theme->preview_url ); ?>" class="button button-secondary alignleft"><?php _e( 'Preview', 'wporg-themes' ); ?></a> 25 <a href="<?php echo esc_url( $theme->download_link); ?>" class="button button-primary alignright"><?php _e( 'Download', 'wporg-themes' ); ?></a> 26 26 </div> 27 27 28 < # if ( data.parent ) { #>28 <?php if ( !empty( $theme->parent ) ) { ?> 29 29 <div class="theme-notice notice notice-info"> 30 <p class="parent"><?php printf( __( 'This is a child theme of %s.', 'wporg-themes' ), sprintf( '<a href=" /themes/%1$s/">%2$s</a>', '{{{ data.parent.slug }}}', '{{{ data.parent.name }}}') ); ?></p>30 <p class="parent"><?php printf( __( 'This is a child theme of %s.', 'wporg-themes' ), sprintf( '<a href="%1$s">%2$s</a>', home_url( $theme->parent['slug'] . '/' ), esc_html( $theme->parent['name'] ) ) ); ?></p> 31 31 </div> 32 < # } #>32 <?php } ?> 33 33 34 34 <div class="theme-meta-info"> 35 <p class="updated"><?php printf( __( 'Last updated: %s', 'wporg-themes' ), '<strong> {{ data.last_updated }}</strong>' ); ?></p>36 < # if ( data.theme_url ) { #>37 <a href=" {{ data.theme_url }}"><?php _e( 'Theme Homepage', 'wporg-themes' ); ?></a>38 < # } #>35 <p class="updated"><?php printf( __( 'Last updated: %s', 'wporg-themes' ), '<strong>' . date_i18n( 'F j, Y', strtotime( $theme->last_updated ) ) . '</strong>' ); ?></p> 36 <?php if ( $theme->theme_url ) { ?> 37 <a href="<?php echo esc_url( $theme->theme_url ); ?>"><?php _e( 'Theme Homepage', 'wporg-themes' ); ?></a> 38 <?php } ?> 39 39 </div> 40 40 </div><!-- .theme-head --> 41 41 42 42 <div class="theme-info"> 43 < # if ( data.screenshot_url ) { #>44 <div class="screenshot"><img src="{{ data.screenshot_url }}?w=1142&strip=all" alt=""/></div>45 < # } else { #>46 <div class="screenshot blank"></div>47 < # } #>43 <?php if ( $theme->screenshot_url ) { ?> 44 <div class="screenshot"><img src="<?php echo esc_url( $theme->screenshot_url ); ?>?w=1142&strip=all" alt=""/></div> 45 <?php } else { ?> 46 <div class="screenshot blank"></div> 47 <?php } ?> 48 48 49 <div class="theme-description entry-summary" itemprop="description"><p> {{{ data.description }}}</p></div>49 <div class="theme-description entry-summary" itemprop="description"><p><?php echo esc_html( $theme->description ); ?></p></div> 50 50 51 < # if ( data.tags ) { #>51 <?php if ( $theme->tags ) { ?> 52 52 <div class="theme-tags"> 53 53 <h4><?php _e( 'Tags:', 'wporg-themes' ); ?></h4> 54 {{{ data.tags }}} 54 <?php 55 $tag_links = array(); 56 foreach ( $theme->tags as $slug => $tagname ) { 57 $tag_links[] = sprintf( 58 "<a href='%s'>%s</a>", 59 esc_url( home_url( "/tags/$slug/" ) ), 60 esc_html( $tagname ) 61 ); 62 } 63 echo implode( ', ', $tag_links ); 64 ?> 55 65 </div><!-- .theme-tags --> 56 < # } #>66 <?php } ?> 57 67 58 68 <div class="theme-downloads"> 59 <h4><?php _e( 'Downloads Per Day', 'wporg-themes' ); ?></h4> 60 <div id="theme-download-stats-{{data.id}}" class="chart"></div> 61 <p class="total-downloads"><?php printf( __( 'Total downloads: %s', 'wporg-themes' ), '<strong>{{ data.downloaded }}</strong>' ); ?></p> 69 <p class="total-downloads"><?php printf( __( 'Total downloads: %s', 'wporg-themes' ), '<strong>' . number_format_i18n( $theme->downloaded ) . '</strong>' ); ?></p> 62 70 </div><!-- .theme-downloads --> 63 71 </div> … … 65 73 <div class="theme-meta"> 66 74 <div class="theme-ratings" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> 67 <meta itemprop="ratingCount" content=" {{ data.num_ratings }}"/>75 <meta itemprop="ratingCount" content="<?php echo $theme->num_ratings; ?>"/> 68 76 <h4><?php _e( 'Ratings', 'wporg-themes' ); ?></h4> 69 77 70 < # if ( data.rating ) { #>71 <div class="rating rating- {{ Math.round( data.rating / 10 ) * 10 }}">78 <?php if ( $theme->rating ) { ?> 79 <div class="rating rating-<?php echo round( $theme->rating / 10 ) * 10; ?>"> 72 80 <span class="one"></span> 73 81 <span class="two"></span> … … 75 83 <span class="four"></span> 76 84 <span class="five"></span> 77 <p class="description"><?php printf( __( '%s out of 5 stars.', 'wporg-themes' ), '<span itemprop="ratingValue"> {{ Math.round( data.rating / 20 / 0.5 )*0.5 }}</span>' ); ?></p>85 <p class="description"><?php printf( __( '%s out of 5 stars.', 'wporg-themes' ), '<span itemprop="ratingValue">' . round( $theme->rating / 20 / 0.5 )*0.5 . '</span>' ); ?></p> 78 86 </div> 79 < # } else { #>87 <?php } else { ?> 80 88 <div class="rating"> 81 89 <div class="ratings"><?php _e( 'This theme has not been rated yet.', 'wporg-themes' ); ?></div> 82 90 </div> 83 < # } #>91 <?php } ?> 84 92 85 < # if ( data.ratings ) { #>93 <?php if ( $theme->ratings ) { ?> 86 94 <ul> 87 <?php foreach ( range( 5, 1 ) as $stars ) : ?> 95 <?php foreach ( range( 5, 1 ) as $stars ) : 96 $rating_bar_width = $theme->num_ratings ? 100 * $theme->ratings[$stars] / $theme->num_ratings : 0; 97 ?> 88 98 <li class="counter-container"> 89 <a href="//wordpress.org/support/view/theme-reviews/ {{ data.id }}?filter=<?php echo $stars; ?>" title="<?php echo esc_attr( sprintf( _n( 'Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $stars, 'wporg-themes' ), $stars ) ); ?>">99 <a href="//wordpress.org/support/view/theme-reviews/<?php echo $theme->slug; ?>?filter=<?php echo $stars; ?>" title="<?php echo esc_attr( sprintf( _n( 'Click to see reviews that provided a rating of %d star', 'Click to see reviews that provided a rating of %d stars', $stars, 'wporg-themes' ), $stars ) ); ?>"> 90 100 <span class="counter-label"><?php printf( _n( '%d star', '%d stars', $stars, 'wporg-themes' ), $stars ); ?></span> 91 101 <span class="counter-back"> 92 <span class="counter-bar" style="width: {{ 100 * data.ratings[<?php echo $stars; ?>] / data.num_ratings }}%;"></span>102 <span class="counter-bar" style="width: <?php echo $rating_bar_width; ?>%;"></span> 93 103 </span> 94 <span class="counter-count"> {{ data.ratings[<?php echo $stars; ?>] }}</span>104 <span class="counter-count"><?php echo $theme->ratings[$stars]; ?></span> 95 105 </a> 96 106 </li> 97 107 <?php endforeach; ?> 98 108 </ul> 99 < # } #>109 <?php } ?> 100 110 101 <a class="button button-secondary" href="https://wordpress.org/support/view/theme-reviews/ {{ data.id }}#postform"><?php _e( 'Add your review', 'wporg-themes' ); ?></a>111 <a class="button button-secondary" href="https://wordpress.org/support/view/theme-reviews/<?php echo $theme->slug; ?>#postform"><?php _e( 'Add your review', 'wporg-themes' ); ?></a> 102 112 </div><!-- .theme-rating --> 103 113 … … 105 115 <h4><?php _e( 'Support', 'wporg-themes' ); ?></h4> 106 116 <p><?php _e( 'Got something to say? Need help?', 'wporg-themes' ); ?></p> 107 <a href="//wordpress.org/support/theme/ {{ data.slug }}" class="button button-secondary"><?php _e( 'View support forum', 'wporg-themes' ); ?></a>117 <a href="//wordpress.org/support/theme/<?php echo $theme->slug; ?>" class="button button-secondary"><?php _e( 'View support forum', 'wporg-themes' ); ?></a> 108 118 </div><!-- .theme-support --> 109 119 … … 113 123 <ul class="unmarked-list"> 114 124 <li> 115 <a href="//themes.trac.wordpress.org/log/ {{data.id}}?limit=100&mode=stop_on_copy&format=rss">125 <a href="//themes.trac.wordpress.org/log/<?php echo $theme->slug; ?>?limit=100&mode=stop_on_copy&format=rss"> 116 126 <img src="//s.w.org/style/images/feedicon.png" /> 117 127 <?php _e( 'Development Log', 'wporg-themes' ); ?> … … 122 132 <h5><?php _e( 'Browse the Code', 'wporg-themes' ); ?></h5> 123 133 <ul class="unmarked-list"> 124 <li><a href="//themes.trac.wordpress.org/log/ {{data.id}}/" rel="nofollow"><?php _e( 'Development Log', 'wporg-themes' ); ?></a></li>125 <li><a href="//themes.svn.wordpress.org/ {{data.id}}/" rel="nofollow"><?php _e( 'Subversion Repository', 'wporg-themes' ); ?></a></li>126 <li><a href="//themes.trac.wordpress.org/browser/ {{data.id}}/" rel="nofollow"><?php _e( 'Browse in Trac', 'wporg-themes' ); ?></a></li>134 <li><a href="//themes.trac.wordpress.org/log/<?php echo $theme->slug; ?>/" rel="nofollow"><?php _e( 'Development Log', 'wporg-themes' ); ?></a></li> 135 <li><a href="//themes.svn.wordpress.org/<?php echo $theme->slug; ?>/" rel="nofollow"><?php _e( 'Subversion Repository', 'wporg-themes' ); ?></a></li> 136 <li><a href="//themes.trac.wordpress.org/browser/<?php echo $theme->slug; ?>/" rel="nofollow"><?php _e( 'Browse in Trac', 'wporg-themes' ); ?></a></li> 127 137 </ul> 128 138 </div><!-- .theme-devs --> … … 130 140 </div> 131 141 </div> 132 </ script>142 </div> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/theme.php
r1483 r1489 1 < script id="tmpl-theme" type="text/template">2 <a class="url" href=" {{{ data.permalink }}}" rel="bookmark" tabindex="-1">3 < # if ( data.screenshot_url ) { #>1 <article id="post-<?php echo esc_attr( $theme->slug ); ?>" class="theme hentry"> 2 <a class="url" href="<?php echo home_url( $theme->slug . '/' ); ?>" rel="bookmark" tabindex="-1"> 3 <?php if ( $theme->screenshot_url ) { ?> 4 4 <div class="theme-screenshot"> 5 <img src=" {{ data.screenshot_url }}?w=572&strip=all" alt="" />5 <img src="<?php echo esc_url( $theme->screenshot_url ); ?>?w=572&strip=all" alt="" /> 6 6 </div> 7 < # } else { #>7 <?php } else { ?> 8 8 <div class="theme-screenshot blank"></div> 9 < # } #>9 <?php } ?> 10 10 <span class="more-details"><?php _ex( 'More Info', 'theme', 'wporg-themes' ); ?></span> 11 <div class="theme-author"><?php printf( _x( 'By %s', 'theme author', 'wporg-themes' ), '<span class="author"> {{ data.author.display_name }}</span>' ); ?></div>12 <h3 class="theme-name entry-title"> {{{ data.name }}}</h3>11 <div class="theme-author"><?php printf( _x( 'By %s', 'theme author', 'wporg-themes' ), '<span class="author">' . esc_html( $theme->author->display_name ) . '</span>' ); ?></div> 12 <h3 class="theme-name entry-title"><?php echo esc_html( $theme->name ); ?></h3> 13 13 </a> 14 14 <div class="theme-actions"> 15 <a class="button button-primary preview install-theme-preview" href=" //downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip"><?php esc_html_e( 'Download', 'wporg-themes' ); ?></a>15 <a class="button button-primary preview install-theme-preview" href="<?php echo esc_url( $theme->download_link ); ?>"><?php esc_html_e( 'Download', 'wporg-themes' ); ?></a> 16 16 </div> 17 </ script>17 </article> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme-single.php
r1481 r1489 17 17 <div> 18 18 <h3 class="theme-name entry-title" itemprop="name">{{{ data.name }}}</h3> 19 <h4 class="theme-author"><?php printf( _x( 'By %s', 'theme author', 'wporg-themes' ), '<a href=" https://wordpress.org/themes/author/{{ data.author.user_nicename }}/"><span class="author" itemprop="author">{{{ data.author.display_name }}}</span></a>' ); ?></h4>19 <h4 class="theme-author"><?php printf( _x( 'By %s', 'theme author', 'wporg-themes' ), '<a href="{{{ data.path }}}author/{{ data.author.user_nicename }}/"><span class="author" itemprop="author">{{{ data.author.display_name }}}</span></a>' ); ?></h4> 20 20 </div> 21 21 … … 23 23 <div class="theme-actions clear"> 24 24 <a href="{{{ data.preview_url }}}" class="button button-secondary alignleft"><?php _e( 'Preview', 'wporg-themes' ); ?></a> 25 <a href=" //downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip" class="button button-primary alignright"><?php _e( 'Download', 'wporg-themes' ); ?></a>25 <a href="{{ data.download_link }}" class="button button-primary alignright"><?php _e( 'Download', 'wporg-themes' ); ?></a> 26 26 </div> 27 27 28 28 <# if ( data.parent ) { #> 29 29 <div class="theme-notice notice notice-info"> 30 <p class="parent"><?php printf( __( 'This is a child theme of %s.', 'wporg-themes' ), sprintf( '<a href=" /themes/%1$s/">%2$s</a>', '{{{ data.parent.slug }}}', '{{{ data.parent.name }}}' ) ); ?></p>30 <p class="parent"><?php printf( __( 'This is a child theme of %s.', 'wporg-themes' ), sprintf( '<a href="%1$s">%2$s</a>', '{{{ data.path }}}{{{ data.parent.slug }}}/', '{{{ data.parent.name }}}' ) ); ?></p> 31 31 </div> 32 32 <# } #> -
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-themes/view-templates/theme.php
r1481 r1489 13 13 </a> 14 14 <div class="theme-actions"> 15 <a class="button button-primary preview install-theme-preview" href=" //downloads.wordpress.org/theme/{{ data.slug }}.{{ data.version }}.zip"><?php esc_html_e( 'Download', 'wporg-themes' ); ?></a>15 <a class="button button-primary preview install-theme-preview" href="{{ data.download_link }}"><?php esc_html_e( 'Download', 'wporg-themes' ); ?></a> 16 16 </div> 17 17 </script>
Note: See TracChangeset
for help on using the changeset viewer.