/** * * PluginCard * */ /* eslint-disable */ import React from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { Button, PopUpWarning } from 'strapi-helper-plugin'; import Wrapper from './Wrapper'; const PLUGINS_WITH_CONFIG = ['content-manager', 'email', 'upload']; /* eslint-disable react/no-unused-state */ class PluginCard extends React.Component { state = { boostrapCol: 'col-lg-4', showModalAutoReload: false, showModalEnv: false, }; componentDidMount() { // Listen window resize. window.addEventListener('resize', this.setBoostrapCol); this.setBoostrapCol(); } componentWillUnmount() { window.removeEventListener('resize', this.setBoostrapCol); } setBoostrapCol = () => { let boostrapCol = 'col-lg-4'; if (window.innerWidth > 1680) { boostrapCol = 'col-lg-3'; } if (window.innerWidth > 2300) { boostrapCol = 'col-lg-2'; } this.setState({ boostrapCol }); }; handleClick = () => { if (this.props.plugin.id !== 'support-us') { this.props.history.push({ pathname: this.props.history.location.pathname, hash: `${this.props.plugin.id}::description`, }); } else { this.aTag.click(); } }; handleClickSettings = e => { const settingsPath = this.props.plugin.id === 'content-manager' ? '/plugins/content-manager/ctm-configurations/models' : `/plugins/${this.props.plugin.id}/configurations/${this.props.currentEnvironment}`; e.preventDefault(); e.stopPropagation(); this.props.history.push(settingsPath); }; handleDownloadPlugin = e => { const { autoReload, currentEnvironment, downloadPlugin, history: { push }, isAlreadyInstalled, plugin: { id }, } = this.props; if (!autoReload) { this.setState({ showModalAutoReload: true }); } else if (currentEnvironment !== 'development') { this.setState({ showModalEnv: true }); } else if (!isAlreadyInstalled) { downloadPlugin(e); } else { push('/list-plugins'); } }; render() { const buttonClass = !this.props.isAlreadyInstalled ? 'primary' : 'secondary'; const buttonLabel = this.props.isAlreadyInstalled ? 'app.components.PluginCard.Button.label.install' : 'app.components.PluginCard.Button.label.download'; // Display settings link for a selection of plugins. const settingsComponent = PLUGINS_WITH_CONFIG.includes( this.props.plugin.id ) && (
); const descriptions = { short: this.props.plugin.id === 'support-us' ? ( ) : ( this.props.plugin.description.short ), long: this.props.plugin.id === 'support-us' ? ( ) : ( this.props.plugin.description.long || this.props.plugin.description.short ), }; return (
icon
{this.props.plugin.name}{' '} window.open( `https://github.com/strapi/strapi/tree/master/packages/strapi-plugin-${this.props.plugin.id}`, '_blank' ) } />
{descriptions.long} {/*   */}
e.stopPropagation()}> {this.props.isAlreadyInstalled ? ( settingsComponent ) : (
)}
this.setState({ showModalAutoReload: false })} popUpWarningType="warning" /> this.setState({ showModalEnv: false })} popUpWarningType="warning" />
); } } PluginCard.defaultProps = { isAlreadyInstalled: false, plugin: { description: '', id: '', name: '', price: 0, ratings: 5, }, }; PluginCard.propTypes = { currentEnvironment: PropTypes.string.isRequired, downloadPlugin: PropTypes.func.isRequired, history: PropTypes.object.isRequired, isAlreadyInstalled: PropTypes.bool, plugin: PropTypes.object, }; export default PluginCard;