Changeset 5024 for sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/widget-area/widgets/meta/index.jsx
- Timestamp:
- 03/01/2017 06:08:54 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/components/widget-area/widgets/meta/index.jsx
r4223 r5024 1 import React from 'react'; 1 /** 2 * External dependencies. 3 */ 4 import React, { Component, PropTypes } from 'react'; 5 import { connect } from 'react-redux'; 6 import { Link } from 'react-router'; 7 import { localize } from 'i18n-calypso'; 8 import { identity } from 'lodash'; 2 9 3 export default React.createClass( { 4 displayName: 'MetaWidget', 10 /** 11 * Internal dependencies. 12 */ 13 import { getPlugin } from 'state/selectors'; 5 14 15 export class MetaWidget extends Component { 16 static propTypes = { 17 moment: PropTypes.func, 18 numberFormat: PropTypes.func, 19 plugin: PropTypes.object, 20 translate: PropTypes.func, 21 }; 22 23 static defaultProps = { 24 moment: identity, 25 numberFormat: identity, 26 plugin: {}, 27 translate: identity, 28 }; 29 30 /** 31 * Returns a string representing the number of active installs for a plugin. 32 * 33 * @return {String} Active installs. 34 */ 35 activeInstalls() { 36 const { numberFormat, translate, plugin } = this.props; 37 let text; 38 39 if ( plugin.meta.active_installs <= 10 ) { 40 text = translate( 'Less than 10' ); 41 } else if ( plugin.meta.active_installs >= 1000000 ) { 42 text = translate( '1+ million' ); 43 } else { 44 text = numberFormat( plugin.meta.active_installs ) + '+'; 45 } 46 47 return text; 48 } 49 50 /** 51 * Returns markup to display tags, if there are any. 52 * 53 * @return {XML} Tags markup. 54 */ 6 55 renderTags() { 7 if ( this.props.plugin.tags.length ) { 8 return ( <li>Categories: <div className="tags">{ this.props.plugin.tags.map( tag => 9 <a key={ tag } href={ `https://wordpress.org/plugins-wp/category/${ tag }/` } rel="tag">{ tag }</a> 10 ) }</div></li> ); 56 const { plugin_tags: tags } = this.props.plugin; 57 58 if ( tags && tags.length ) { 59 const tagsList = ( 60 <div className="tags"> 61 { tags.map( ( tag ) => <Link key={ tag } to={ `tags/${ tag }/` } rel="tag">{ tag }</Link> ) } 62 </div> 63 ); 64 65 return ( 66 <li> 67 { this.props.translate( 'Tag: {{tagsList/}}', 'Tags: {{tagsList/}}', { 68 count: tags.length, 69 components: { tagsList }, 70 } ) } 71 </li> 72 ); 11 73 } 12 } ,74 } 13 75 14 76 render() { 77 const { moment, plugin, translate } = this.props; 15 78 16 79 return ( 17 80 <div className="widget plugin-meta"> 18 <h3 className="screen-reader-text"> Meta</h3>81 <h3 className="screen-reader-text">{ translate( 'Meta' ) }</h3> 19 82 <link itemProp="applicationCategory" href="http://schema.org/OtherApplication" /> 20 83 <span itemProp="offers" itemScope itemType="http://schema.org/Offer"> … … 27 90 28 91 <ul> 29 <li>Version: <strong>{ this.props.plugin.version }</strong></li> 30 <li>Last updated: <strong><span itemProp="dateModified" content={ this.props.plugin.last_updated }>{ this.props.plugin.last_updated }</span> ago</strong></li> 31 <li>Active installs: <strong>{ this.props.plugin.active_installs }</strong></li> 32 <li>Tested up to: <strong>{ this.props.plugin.tested }</strong></li> 92 <li> 93 { translate( 'Version: {{strong}}%(version)s{{/strong}}', { 94 args: { version: plugin.meta.version }, 95 components: { strong: <strong /> }, 96 } ) } 97 </li> 98 <li> 99 { translate( 'Last updated: {{strong}}%(updated)s{{/strong}}', { 100 args: { updated: moment( plugin.modified_gmt ).fromNow() }, 101 components: { strong: <strong itemProp="dateModified" content={ plugin.modified_gmt } /> }, 102 } ) } 103 </li> 104 <li> 105 { translate( 'Active installs: {{strong}}%(installs)s{{/strong}}', { 106 args: { installs: this.activeInstalls() }, 107 components: { strong: <strong /> }, 108 } ) } 109 </li> 110 <li> 111 { translate( 'Tested up to: {{strong}}%(tested)s{{/strong}}', { 112 args: { tested: plugin.meta.tested }, 113 components: { strong: <strong /> }, 114 } ) } 115 </li> 33 116 { this.renderTags() } 34 117 </ul> 35 118 </div> 36 ) 119 ); 37 120 } 38 } ); 121 } 122 123 export default connect( 124 ( state ) => ( { 125 plugin: getPlugin( state ), 126 } ), 127 )( localize( MetaWidget ) );
Note: See TracChangeset
for help on using the changeset viewer.