Merge with AD-1255

This commit is contained in:
Brett Sun 2015-11-06 15:26:37 +01:00
commit f92fa972bf
10 changed files with 95 additions and 173 deletions

View File

@ -19,65 +19,67 @@ import ApiUrls from '../../../constants/api_urls';
import { getAclFormMessage, getAclFormDataId } from '../../../utils/form_utils';
import { getLangText } from '../../../utils/lang_utils';
let AclButton = React.createClass({
propTypes: {
action: React.PropTypes.oneOf(AppConstants.aclList).isRequired,
availableAcls: React.PropTypes.object.isRequired,
buttonAcceptName: React.PropTypes.string,
buttonAcceptClassName: React.PropTypes.string,
currentUser: React.PropTypes.object.isRequired,
email: React.PropTypes.string,
pieceOrEditions: React.PropTypes.oneOfType([
React.PropTypes.object,
React.PropTypes.array
]).isRequired,
title: React.PropTypes.string,
handleSuccess: React.PropTypes.func.isRequired,
className: React.PropTypes.string
},
// Removes the acl_ prefix and converts to upper case
sanitizeAction() {
if (this.props.buttonAcceptName) {
return this.props.buttonAcceptName;
}
return this.props.action.split('acl_')[1].toUpperCase();
},
render() {
const {
action,
availableAcls,
buttonAcceptClassName,
currentUser,
email,
pieceOrEditions,
handleSuccess,
title } = this.props;
return (
<AclProxy
aclName={action}
aclObject={availableAcls}>
<ModalWrapper
trigger={
<button
className={classNames('btn', 'btn-default', 'btn-sm', buttonAcceptClassName)}>
{this.sanitizeAction()}
</button>
}
handleSuccess={handleSuccess}
title={title}>
<AclFormFactory
action={action}
currentUser={currentUser}
email={email}
pieceOrEditions={pieceOrEditions}
showNotification />
</ModalWrapper>
</AclProxy>
);
export default function ({ action, displayName, title, tooltip }) {
if (AppConstants.aclList.indexOf(action) < 0) {
console.warn('Your specified aclName did not match a an acl class.');
}
});
export default AclButton;
return React.createClass({
displayName: displayName,
propTypes: {
availableAcls: React.PropTypes.object.isRequired,
buttonAcceptName: React.PropTypes.string,
buttonAcceptClassName: React.PropTypes.string,
currentUser: React.PropTypes.object.isRequired,
email: React.PropTypes.string,
pieceOrEditions: React.PropTypes.oneOfType([
React.PropTypes.object,
React.PropTypes.array
]).isRequired,
handleSuccess: React.PropTypes.func.isRequired,
className: React.PropTypes.string
},
// Removes the acl_ prefix and converts to upper case
sanitizeAction() {
if (this.props.buttonAcceptName) {
return this.props.buttonAcceptName;
}
return action.split('acl_')[1].toUpperCase();
},
render() {
const {
availableAcls,
buttonAcceptClassName,
currentUser,
email,
pieceOrEditions,
handleSuccess } = this.props;
return (
<AclProxy
aclName={action}
aclObject={availableAcls}>
<ModalWrapper
trigger={
<button
className={classNames('btn', 'btn-default', 'btn-sm', buttonAcceptClassName)}>
{this.sanitizeAction()}
</button>
}
handleSuccess={handleSuccess}
title={title}>
<AclFormFactory
action={action}
currentUser={currentUser}
email={email}
pieceOrEditions={pieceOrEditions}
showNotification />
</ModalWrapper>
</AclProxy>
);
}
});
}

View File

@ -4,24 +4,11 @@ import React from 'react';
import AclButton from './acl_button';
import { omitFromObject } from '../../../utils/general_utils';
import { getLangText } from '../../../utils/lang_utils';
let ConsignButton = React.createClass({
propTypes: {
...omitFromObject(AclButton.propTypes, ['action']),
email: React.PropTypes.string
},
render() {
return (
<AclButton
{...this.props}
action='acl_consign'
title={getLangText('Consign artwork')}
tooltip={getLangText('Have someone else sell the artwork')} />
);
}
export default AclButton({
action: 'acl_consign',
displayName: 'ConsignButton',
title: getLangText('Consign artwork'),
tooltip: getLangText('Have someone else sell the artwork')
});
export default ConsignButton;

View File

@ -4,24 +4,11 @@ import React from 'react';
import AclButton from './acl_button';
import { omitFromObject } from '../../../utils/general_utils';
import { getLangText } from '../../../utils/lang_utils';
let LoanButton = React.createClass({
propTypes: {
...omitFromObject(AclButton.propTypes, ['action']),
email: React.PropTypes.string
},
render() {
return (
<AclButton
{...this.props}
action='acl_loan'
title={getLangText('Loan artwork')}
tooltip={getLangText('Loan your artwork for a limited period of time')} />
);
}
export default AclButton({
action: 'acl_loan',
displayName: 'LoanButton',
title: getLangText('Loan artwork'),
tooltip: getLangText('Loan your artwork for a limited period of time')
});
export default LoanButton;

View File

@ -4,21 +4,11 @@ import React from 'react';
import AclButton from './acl_button';
import { omitFromObject } from '../../../utils/general_utils';
import { getLangText } from '../../../utils/lang_utils';
let LoanButton = React.createClass({
propTypes: omitFromObject(AclButton.propTypes, ['action']),
render() {
return (
<AclButton
{...this.props}
action='acl_loan_request'
title={getLangText('Loan artwork')}
tooltip={getLangText('Someone requested you to loan your artwork for a limited period of time')} />
);
}
export default AclButton({
action: 'acl_loan_request',
displayName: 'LoanRequestButton',
title: getLangText('Loan artwork'),
tooltip: getLangText('Someone requested you to loan your artwork for a limited period of time')
});
export default LoanButton;

View File

@ -4,21 +4,11 @@ import React from 'react';
import AclButton from './acl_button';
import { omitFromObject } from '../../../utils/general_utils';
import { getLangText } from '../../../utils/lang_utils';
let ShareButton = React.createClass({
propTypes: omitFromObject(AclButton.propTypes, ['action']),
render() {
return (
<AclButton
{...this.props}
action='acl_share'
title={getLangText('Share artwork')}
tooltip={getLangText('Share the artwork')} />
);
}
export default AclButton({
action: 'acl_share',
displayName: 'ShareButton',
title: getLangText('Share artwork'),
tooltip: getLangText('Share the artwork')
});
export default ShareButton;

View File

@ -4,21 +4,11 @@ import React from 'react';
import AclButton from './acl_button';
import { omitFromObject } from '../../../utils/general_utils';
import { getLangText } from '../../../utils/lang_utils';
let TransferButton = React.createClass({
propTypes: omitFromObject(AclButton.propTypes, ['action']),
render() {
return (
<AclButton
{...this.props}
action='acl_transfer'
title={getLangText('Transfer artwork')}
tooltip={getLangText('Transfer the ownership of the artwork')} />
);
}
export default AclButton({
action: 'acl_transfer',
displayName: 'TransferButton',
title: getLangText('Transfer artwork'),
tooltip: getLangText('Transfer the ownership of the artwork')
});
export default TransferButton;

View File

@ -4,21 +4,11 @@ import React from 'react';
import AclButton from './acl_button';
import { omitFromObject } from '../../../utils/general_utils';
import { getLangText } from '../../../utils/lang_utils';
let UnconsignButton = React.createClass({
propTypes: omitFromObject(AclButton.propTypes, ['action']),
render() {
return (
<AclButton
{...this.props}
action='acl_unconsign'
title={getLangText('Unconsign artwork')}
tooltip={getLangText('Have the owner manage his sales again')} />
);
}
export default AclButton({
action: 'acl_unconsign',
displayName: 'UnconsignButton',
title: getLangText('Unconsign artwork'),
tooltip: getLangText('Have the owner manage his sales again')
});
export default UnconsignButton;

View File

@ -31,6 +31,8 @@ export default function AuthProxyHandler({to, when}) {
return (Component) => {
return React.createClass({
displayName: 'AuthProxyHandler',
propTypes: {
location: object
},

View File

@ -11,7 +11,7 @@ let constants = {
'serverUrl': window.SERVER_URL,
'baseUrl': window.BASE_URL,
'aclList': ['acl_coa', 'acl_consign', 'acl_delete', 'acl_download', 'acl_edit', 'acl_create_editions', 'acl_view_editions',
'acl_loan', 'acl_share', 'acl_transfer', 'acl_unconsign', 'acl_unshare', 'acl_view',
'acl_loan', 'acl_loan_request', 'acl_share', 'acl_transfer', 'acl_unconsign', 'acl_unshare', 'acl_view',
'acl_withdraw_transfer', 'acl_wallet_submit'],
'version': 0.1,

View File

@ -20,22 +20,6 @@ export function getAclFormDataId(isPiece, pieceOrEditions) {
}
}
/**
* Get the data ids of the given piece or editions.
* @param {boolean} isPiece Is the given entities parameter a piece? (False: array of editions)
* @param {(object|object[])} pieceOrEditions Piece or array of editions
* @return {(object|object[])} Data IDs of the pieceOrEditions for the form
*/
export function getAclFormDataId(isPiece, pieceOrEditions) {
if (isPiece) {
return {piece_id: pieceOrEditions.id};
} else {
return {bitcoin_id: pieceOrEditions.map(function(edition){
return edition.bitcoin_id;
}).join()};
}
}
/**
* Generates a message for submitting a form
* @param {object} options Options object for creating the message: