more badass permissions selector
This commit is contained in:
parent
3e07c431e0
commit
73d88771af
2 changed files with 28 additions and 38 deletions
|
@ -72,6 +72,7 @@ class Links extends Component {
|
||||||
|
|
||||||
render = () => {
|
render = () => {
|
||||||
const { topic, ActiveMapper } = this.props
|
const { topic, ActiveMapper } = this.props
|
||||||
|
const authorizedToEdit = topic.authorizeToEdit(ActiveMapper)
|
||||||
const metacode = topic.getMetacode()
|
const metacode = topic.getMetacode()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -125,8 +126,8 @@ class Links extends Component {
|
||||||
{this.state.hoveringSynapseCount && <div className="tip">Click to see this topics synapses</div>}
|
{this.state.hoveringSynapseCount && <div className="tip">Click to see this topics synapses</div>}
|
||||||
</a>
|
</a>
|
||||||
<Permission
|
<Permission
|
||||||
topic={topic}
|
permission={topic.get('permission')}
|
||||||
ActiveMapper={ActiveMapper}
|
authorizedToEdit={authorizedToEdit}
|
||||||
updateTopic={this.props.updateTopic}
|
updateTopic={this.props.updateTopic}
|
||||||
/>
|
/>
|
||||||
<div className="clearfloat"></div>
|
<div className="clearfloat"></div>
|
||||||
|
|
|
@ -22,54 +22,43 @@ class Permission extends Component {
|
||||||
this.setState({selectingPermission: false})
|
this.setState({selectingPermission: false})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
liClick = value => event => {
|
||||||
|
this.closePermissionSelect()
|
||||||
|
this.props.updateTopic({
|
||||||
|
permission: value,
|
||||||
|
defer_to_map_id: null
|
||||||
|
})
|
||||||
|
// prevents it from also firing the event listener on the parent
|
||||||
|
event.preventDefault()
|
||||||
|
}
|
||||||
|
|
||||||
render = () => {
|
render = () => {
|
||||||
const self = this
|
const { permission, authorizedToEdit } = this.props
|
||||||
const { topic, ActiveMapper, updateTopic } = this.props
|
|
||||||
const { selectingPermission } = this.state
|
const { selectingPermission } = this.state
|
||||||
const permission = topic.get('permission')
|
|
||||||
const canChange = topic.authorizePermissionChange(ActiveMapper)
|
|
||||||
const onClick = canChange ? this.togglePermissionSelect : () => {}
|
|
||||||
let classes = `linkItem mapPerm ${permission.substring(0, 2)}`
|
let classes = `linkItem mapPerm ${permission.substring(0, 2)}`
|
||||||
if (selectingPermission) classes += ' minimize'
|
if (selectingPermission) classes += ' minimize'
|
||||||
const liClick = value => {
|
|
||||||
return event => {
|
|
||||||
self.closePermissionSelect()
|
|
||||||
updateTopic({
|
|
||||||
permission: value,
|
|
||||||
defer_to_map_id: null
|
|
||||||
})
|
|
||||||
// prevents it from also firing the event listener on the parent
|
|
||||||
event.preventDefault()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const selectCommons = <li key='1' className='commons' onClick={liClick('commons')}></li>
|
|
||||||
const selectPublic = <li key='2' className='public' onClick={liClick('public')}></li>
|
|
||||||
const selectPrivate = <li key='3' className='private' onClick={liClick('private')}></li>
|
|
||||||
let permOptions
|
|
||||||
if (permission === 'commons') {
|
|
||||||
permOptions = [selectPublic, selectPrivate]
|
|
||||||
} else if (permission === 'public') {
|
|
||||||
permOptions = [selectCommons, selectPrivate]
|
|
||||||
} else if (permission === 'private') {
|
|
||||||
permOptions = [selectCommons, selectPublic]
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div className={classes}
|
||||||
className={classes}
|
title={permission}
|
||||||
title={permission}
|
onClick={authorizedToEdit ? this.togglePermissionSelect : null}
|
||||||
onClick={onClick}>
|
>
|
||||||
{selectingPermission && <ul className="permissionSelect">
|
<ul className="permissionSelect"
|
||||||
{permOptions}
|
style={{ display: selectingPermission ? 'block' : 'none' }}
|
||||||
</ul>}
|
>
|
||||||
|
{permission !== 'commons' && <li className='commons' onClick={this.liClick('commons')}></li>}
|
||||||
|
{permission !== 'public' && <li className='public' onClick={this.liClick('public')}></li>}
|
||||||
|
{permission !== 'private' && <li className='private' onClick={this.liClick('private')}></li>}
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Permission.propTypes = {
|
Permission.propTypes = {
|
||||||
topic: PropTypes.object, // backbone object
|
permission: PropTypes.string, // 'co', 'pu', or 'pr'
|
||||||
ActiveMapper: PropTypes.object,
|
authorizedToEdit: PropTypes.bool,
|
||||||
updateTopic: PropTypes.func
|
updateTopic: PropTypes.func
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue