Making WordPress.org


Ignore:
Timestamp:
06/23/2015 10:33:30 PM (9 years ago)
Author:
ocean90
Message:

Translate: First pass for a new Language and Project Portal.

props isaackeyet, ocean90.
see #1091.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/translate.wordpress.org/public_html/gp-templates/locale.php

    r1586 r1684  
    22gp_title( sprintf( __( 'Projects translated to %s < GlotPress' ),  esc_html( $locale->english_name ) ) );
    33
    4 $breadcrumb = array();
     4$breadcrumb   = array();
    55$breadcrumb[] = gp_link_get( '/languages', __( 'Locales' ) );
    6 if ( 'default' == $current_set_slug ) {
    7     $breadcrumb[] = esc_html( $locale->english_name );
    8 } else {
    9     $breadcrumb[] = gp_link_get( gp_url_join( '/languages', $locale->slug ), esc_html( $locale->english_name ) );
    10     $breadcrumb[] = $set_list[ $current_set_slug ];
    11 }
     6$breadcrumb[] = esc_html( $locale->english_name );
    127gp_breadcrumb( $breadcrumb );
    138gp_tmpl_header();
    149?>
    1510
    16     <h2><?php printf( __( 'Active Projects translated to %s' ), esc_html( $locale->english_name ) ); ?></h2>
     11<div class="locale-header">
     12    <p class="locale-intro">Translate WordPress, core projects, plugins, and themes into your language. Select your project below to get started.</p>
    1713
    18 <?php if ( count( $set_list ) > 1 ) : ?>
    19     <p class="actionlist secondary">
    20         <?php echo implode( ' &bull;&nbsp;', $set_list ); ?>
    21     </p>
    22 <?php endif; ?>
     14    <div class="locale-box">
     15        <ul class="name">
     16            <li class="english"><?php echo $locale->english_name; ?></li>
     17            <li class="native"><?php echo $locale->native_name; ?></li>
     18            <li class="code">
     19                <?php
     20                echo $locale->wp_locale;
    2321
    24 <?php
    25 if ( empty( $projects_data ) ) {
    26     _e( 'No active projects found.' );
    27 }
    28 ?>
     22                if ( count( $variants ) > 1 ) {
     23                    ?>
     24                    <select id="variant-selector" name="variant">
     25                        <?php
     26                        foreach ( $variants as $variant ) {
     27                            $selected =
     28                            printf(
     29                                '<option name="%s" data-project-url="%s"%s>%s</option>',
     30                                $variant,
     31                                esc_url( gp_url_join( '/languages', $locale_slug, $variant, $project->slug ) ),
     32                                ( $set_slug == $variant ) ? ' selected="selected"' : '',
     33                                ucfirst( $variant )
     34                            );
     35                        }
     36                        ?>
     37                    </select>
     38                    <?php
     39                }
     40                ?>
     41            </li>
     42        </ul>
     43        <div class="contributors">
     44            <?php
     45            $contributors = sprintf(
     46                '<span class="dashicons dashicons-admin-users"></span><br />%s',
     47                isset( $contributors_count[ $locale->slug ] ) ? $contributors_count[ $locale->slug ] : 0
     48            );
     49            echo gp_link_get( 'https://make.wordpress.org/polyglots/teams/?locale=' . $locale->wp_locale, $contributors );
     50            ?>
     51        </div>
     52    </div>
     53</div>
    2954
    30 <?php foreach ( $projects_data as $project_id => $sub_projects ) : ?>
    31     <div class="locale-project">
    32         <h3><?php echo ( $projects[$project_id]->name );?></h3>
    33         <table class="locale-sub-projects">
    34             <thead>
    35             <tr>
    36                 <th class="header" <?php if (count($sub_projects)>1 ) echo 'rowspan="'. count($sub_projects) . '"';?>><?php if (count($sub_projects)>1 ) _e( 'Project' ); ?></th>
    37                 <th class="header"><?php _e( 'Set / Sub Project' ); ?></th>
    38                 <th><?php _e( 'Translated' ); ?></th>
    39                 <th><?php _e( 'Fuzzy' ); ?></th>
    40                 <th><?php _e( 'Untranslated' ); ?></th>
    41                 <th><?php _e( 'Waiting' ); ?></th>
    42             </tr>
    43             </thead>
    44             <tbody>
    45             <?php foreach ( $sub_projects as $sub_project_id => $data ) : ?>
    46                 <tr>
    47                 <th class="sub-project" rowspan="<?php echo count( $data['sets'] );  ?>">
    48                     <?php if (count($sub_projects)>1  ) echo esc_html( $projects[$sub_project_id]->name ); ?>
    49                     <div class="stats">
    50                         <div class="total-strings"><?php printf( __( '%d strings' ), $data['totals']->all_count ); ?></div>
    51                         <div class="percent-completed"><?php printf( __( '%d%% translated' ), $data['totals']->current_count ? floor( absint($data['totals']->current_count ) / absint( $data['totals']->all_count ) * 100 ) : 0 ); ?></div>
    52                     </div>
    53                 </th>
    54                 <?php foreach ( $data['sets'] as $set_id => $set_data ) : ?>
    55                     <?php  reset( $data['sets'] );  if ( $set_id !== key($data['sets']) ) echo '<tr>'; ?>
    56                     <td class="set-name">
    57                         <strong><?php gp_link( gp_url_project( $set_data->project_path, gp_url_join( $locale->slug, $set_data->slug ) ), $set_data->name ); ?></strong>
    58                         <?php if ( $set_data->current_count && $set_data->current_count >= $set_data->all_count * 0.9 ):
    59                             $percent = floor( $set_data->current_count / $set_data->all_count * 100 );
    60                             ?>
    61                             <span class="bubble morethan90"><?php echo $percent; ?>%</span>
    62                         <?php endif;?>
    63                     </td>
    64                     <td class="stats translated"><?php gp_link( gp_url_project( $set_data->project_path, gp_url_join( $locale->slug, $set_data->slug ), array('filters[translated]' => 'yes', 'filters[status]' => 'current') ), absint( $set_data->current_count ) ); ?></td>
    65                     <td class="stats fuzzy"><?php gp_link( gp_url_project( $set_data->project_path, gp_url_join( $locale->slug, $set_data->slug ), array('filters[status]' => 'fuzzy' ) ), absint( $set_data->fuzzy_count ) ); ?></td>
    66                     <td class="stats untranslated"><?php gp_link( gp_url_project( $set_data->project_path, gp_url_join( $locale->slug, $set_data->slug ), array('filters[status]' => 'untranslated' ) ), absint( $set_data->all_count ) -  absint( $set_data->current_count ) ); ?></td>
    67                     <td class="stats waiting"><?php gp_link( gp_url_project( $set_data->project_path, gp_url_join( $locale->slug, $set_data->slug ), array('filters[translated]' => 'yes', 'filters[status]' => 'waiting') ), absint( $set_data->waiting_count ) ); ?></td>
    68                     </tr>
    69                 <?php endforeach; //sub project slugs ?>
    70                 </tr>
    71             <?php endforeach;  //sub projects ?>
    72             </tbody>
    73         </table>
     55<div class="filter-header">
     56    <ul class="filter-header-links">
     57        <?php
     58        foreach ( $top_level_projects as $top_level_project ) {
     59            printf(
     60                '<li><a href="%s"%s>%s</a></li>',
     61                gp_url_join( '/languages', $locale_slug, $set_slug, $top_level_project->slug ),
     62                ( $top_level_project->path == $project_path ) ? ' class="current"' : '',
     63                $top_level_project->name
     64            );
     65        }
     66        ?>
     67    </ul>
     68    <div class="search-form">
     69        <label class="screen-reader-text" for="projects-filter"><?php esc_attr_e( 'Search projects...' ); ?></label>
     70        <input placeholder="<?php esc_attr_e( 'Search projects...' ); ?>" type="search" id="projects-filter" class="filter-search">
    7471    </div>
    75 <?php endforeach; //top projects ?>
     72</div>
    7673
    77     <p class="actionlist secondary">
    78         <?php gp_link( '/projects', __('All projects') ); ?>
    79     </p>
     74<div id="projects" class="projects">
     75    <?php
     76    foreach ( $sub_projects as $sub_project ) {
     77        $percent_complete = $waiting = $sub_projects_count = 0;
     78        if ( isset( $project_status[ $sub_project->id ] ) ) {
     79            $status = $project_status[ $sub_project->id ];
     80            $percent_complete = floor( $status->current_count / $status->all_count * 100 );
     81            $waiting = $status->waiting_count;
     82            $sub_projects_count = $status->sub_projects_count;
     83        }
     84
     85        $project_url = gp_url_join( '/languages', $locale_slug, $set_slug, $sub_project->path );
     86
     87        $project_icon = '';
     88        if ( isset( $project_icons[ $sub_project->id ] ) ) {
     89            $project_icon = $project_icons[ $sub_project->id ];
     90        }
     91
     92        $classes = 'project-' . sanitize_title_with_dashes( str_replace( '/', '-', $project->path ) );
     93        $classes .= ' project-' . sanitize_title_with_dashes( str_replace( '/', '-', $sub_project->path ) );
     94        $classes .= ' percent-' . $percent_complete;
     95        ?>
     96        <div class="project <?php echo $classes; ?>">
     97            <div class="project-top">
     98                <div class="project-icon">
     99                    <?php echo gp_link_get( $project_url, $project_icon ) ?>
     100                </div>
     101
     102                <div class="project-name">
     103                    <h4>
     104                        <?php echo gp_link_get( $project_url, $sub_project->name ) ?>
     105                    </h4>
     106                </div>
     107                <div class="project-description">
     108                    <p><?php echo $sub_project->description; ?></p>
     109                </div>
     110            </div>
     111
     112            <div class="project-status">
     113                <div class="project-status-sub-projects">
     114                    <span class="project-status-title">Sub-Projects</span>
     115                    <span class="project-status-value"><?php echo $sub_projects_count; ?></span>
     116                </div>
     117                <div class="project-status-waiting">
     118                    <span class="project-status-title">Waiting</span>
     119                    <span class="project-status-value"><?php echo $waiting; ?></span>
     120                </div>
     121                <div class="project-status-progress">
     122                    <span class="project-status-title">Progress</span>
     123                    <span class="project-status-value"><?php echo $percent_complete; ?>%</span>
     124                </div>
     125            </div>
     126
     127            <div class="percent">
     128                <div class="percent-complete" style="width:<?php echo $percent_complete; ?>%;"></div>
     129            </div>
     130
     131            <div class="project-bottom">
     132                <div class="button contribute-button">
     133                    <?php echo gp_link_get( $project_url, 'Translate Project' ) ?>
     134                </div>
     135            </div>
     136        </div>
     137        <?php
     138    }
     139    ?>
     140</div>
     141
     142<script>
     143    jQuery( document ).ready( function( $ ) {
     144        $rows = $( '#projects' ).find( '.project' );
     145        $( '#projects-filter' ).on( 'input keyup', function() {
     146            var words = this.value.toLowerCase().split( ' ' );
     147
     148            if ( '' === this.value.trim() ) {
     149                $rows.show();
     150            } else {
     151                $rows.hide();
     152                $rows.filter( function( i, v ) {
     153                    var $t = $(this).find( '.project-top' );
     154                    for ( var d = 0; d < words.length; ++d ) {
     155                        if ( $t.text().toLowerCase().indexOf( words[d] ) != -1 ) {
     156                            return true;
     157                        }
     158                    }
     159                    return false;
     160                }).show();
     161            }
     162        });
     163
     164        $( '#variant-selector' ).on( 'change', function( event ) {
     165            event.preventDefault();
     166
     167            var $optionSelected = $( 'option:selected', this ),
     168                projectUrl = $optionSelected.data( 'projectUrl' );
     169
     170            if ( projectUrl.length ) {
     171                window.location = projectUrl;
     172            }
     173        });
     174    });
     175</script>
    80176
    81177<?php gp_tmpl_footer();
Note: See TracChangeset for help on using the changeset viewer.