Skip to content
Snippets Groups Projects
Commit 144402ec authored by blackle's avatar blackle
Browse files

Show visibility toggle on media gallery for sensitive images

parent 37783554
No related branches found
No related tags found
No related merge requests found
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import PureRenderMixin from 'react-addons-pure-render-mixin'; import PureRenderMixin from 'react-addons-pure-render-mixin';
import { FormattedMessage } from 'react-intl'; import IconButton from './icon_button';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
const messages = defineMessages({
toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Toggle visibility' }
});
const outerStyle = { const outerStyle = {
marginTop: '8px', marginTop: '8px',
overflow: 'hidden', overflow: 'hidden',
width: '100%', width: '100%',
boxSizing: 'border-box' boxSizing: 'border-box',
position: 'relative'
}; };
const spoilerStyle = { const spoilerStyle = {
...@@ -32,6 +38,13 @@ const spoilerSubSpanStyle = { ...@@ -32,6 +38,13 @@ const spoilerSubSpanStyle = {
fontWeight: '500' fontWeight: '500'
}; };
const spoilerButtonStyle = {
position: 'absolute',
top: '6px',
left: '8px',
zIndex: '100'
};
const MediaGallery = React.createClass({ const MediaGallery = React.createClass({
getInitialState () { getInitialState () {
...@@ -59,11 +72,11 @@ const MediaGallery = React.createClass({ ...@@ -59,11 +72,11 @@ const MediaGallery = React.createClass({
}, },
handleOpen () { handleOpen () {
this.setState({ visible: true }); this.setState({ visible: !this.state.visible });
}, },
render () { render () {
const { media, sensitive } = this.props; const { media, intl, sensitive } = this.props;
let children; let children;
...@@ -135,8 +148,19 @@ const MediaGallery = React.createClass({ ...@@ -135,8 +148,19 @@ const MediaGallery = React.createClass({
}); });
} }
let spoilerButton;
if (sensitive) {
spoilerButton = (
<div style={spoilerButtonStyle} >
<IconButton title={intl.formatMessage(messages.toggle_visible)} icon={this.state.visible ? 'eye' : 'eye-slash'} onClick={this.handleOpen} />
</div>
);
}
return ( return (
<div style={{ ...outerStyle, height: `${this.props.height}px` }}> <div style={{ ...outerStyle, height: `${this.props.height}px` }}>
{spoilerButton}
{children} {children}
</div> </div>
); );
...@@ -144,4 +168,4 @@ const MediaGallery = React.createClass({ ...@@ -144,4 +168,4 @@ const MediaGallery = React.createClass({
}); });
export default MediaGallery; export default injectIntl(MediaGallery);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment