95 lines
2.7 KiB
JavaScript
Raw Normal View History

2016-08-24 15:09:42 +02:00
/**
2017-03-15 11:48:56 +01:00
*
* LeftMenuLinkContainer
*
*/
2016-08-24 15:09:42 +02:00
import React from 'react';
2017-08-17 15:39:09 +02:00
import { FormattedMessage } from 'react-intl';
2016-08-24 15:09:42 +02:00
import LeftMenuLink from 'components/LeftMenuLink';
2017-08-17 15:39:09 +02:00
2016-08-24 15:09:42 +02:00
import styles from './styles.scss';
2017-08-17 15:39:09 +02:00
import messages from './messages.json';
2016-08-24 15:09:42 +02:00
class LeftMenuLinkContainer extends React.Component { // eslint-disable-line react/prefer-stateless-function
render() {
2017-08-14 17:09:34 +02:00
// Generate the list of sections
const linkSections = this.props.plugins.valueSeq().map(plugin => (
plugin.get('leftMenuSections').map((leftMenuSection, j) => {
const sectionlinks = leftMenuSection.get('links').map((sectionLink, k) => (
<LeftMenuLink
key={k}
icon={sectionLink.get('icon') || 'link'}
label={sectionLink.get('label')}
destination={`/plugins/${plugin.get('id')}/${sectionLink.get('destination')}`}
2017-08-14 17:09:34 +02:00
/>
));
return (
<div key={j}>
<p className={styles.title}>{leftMenuSection.get('name')}</p>
<ul className={styles.list}>
{sectionlinks}
</ul>
</div>
);
})
));
2016-11-22 15:22:16 +01:00
// Check if the plugins list is empty or not
2017-08-23 13:33:01 +02:00
const pluginsLinks = this.props.plugins.size
? this.props.plugins.valueSeq().map((plugin) => (
<LeftMenuLink
key={plugin.get('id')}
icon={plugin.get('icon') || 'plug'}
label={plugin.get('name')}
destination={`/plugins/${plugin.get('id')}`}
/>
))
2017-09-09 16:06:19 +02:00
: (
<li className={styles.noPluginsInstalled}>
2017-09-09 17:00:35 +02:00
<FormattedMessage {...messages.noPluginsInstalled} />.
2017-09-09 16:06:19 +02:00
</li>
);
2016-08-24 15:09:42 +02:00
return (
<div className={styles.leftMenuLinkContainer}>
2017-08-14 17:09:34 +02:00
{linkSections}
<div>
2017-08-17 15:39:09 +02:00
<p className={styles.title}><FormattedMessage {...messages.plugins} /></p>
2017-08-14 17:09:34 +02:00
<ul className={styles.list}>
{pluginsLinks}
</ul>
</div>
<div>
2017-08-17 15:39:09 +02:00
<p className={styles.title}><FormattedMessage {...messages.general} /></p>
2017-08-14 17:09:34 +02:00
<ul className={styles.list}>
<LeftMenuLink
icon="cubes"
2017-08-17 15:39:09 +02:00
label={messages.listPlugins.id}
destination="/list-plugins"
2017-08-14 17:09:34 +02:00
/>
<LeftMenuLink
icon="download"
2017-08-17 15:39:09 +02:00
label={messages.installNewPlugin.id}
destination="/install-plugin"
2017-08-14 17:09:34 +02:00
/>
<LeftMenuLink
icon="gear"
2017-08-17 15:39:09 +02:00
label={messages.configuration.id}
destination="/configuration"
2017-08-14 17:09:34 +02:00
/>
</ul>
</div>
2016-08-24 15:09:42 +02:00
</div>
);
}
}
LeftMenuLinkContainer.propTypes = {
2017-08-18 17:51:10 +02:00
plugins: React.PropTypes.object.isRequired,
2016-08-24 15:09:42 +02:00
};
export default LeftMenuLinkContainer;