diff --git a/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js b/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js
index 941b3ec0..6722beb7 100644
--- a/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js
+++ b/js/components/whitelabel/wallet/components/lumenus/lumenus_buttons/lumenus_submit_button.js
@@ -3,19 +3,30 @@
import React from 'react';
import classNames from 'classnames';
+import LumenusAdditionalDataForm from '../lumenus_forms/lumenus_additional_data_form';
+
import ConsignButton from '../../../../../ascribe_buttons/acls/consign_button';
+import AclFormFactory from '../../../../../ascribe_forms/acl_form_factory';
+import ConsignForm from '../../../../../ascribe_forms/form_consign';
+
+import ModalWrapper from '../../../../../ascribe_modal/modal_wrapper';
+
+import PieceActions from '../../../../../../actions/piece_actions';
import WhitelabelActions from '../../../../../../actions/whitelabel_actions';
import WhitelabelStore from '../../../../../../stores/whitelabel_store';
+import ApiUrls from '../../../../../../constants/api_urls';
+
+import { getAclFormDataId } from '../../../../../../utils/form_utils';
import { getLangText } from '../../../../../../utils/lang_utils';
let LumenusSubmitButton = React.createClass({
propTypes: {
availableAcls: React.PropTypes.object.isRequired,
- currentUser: React.PropTypes.object,
- pieceOrEditions: React.PropTypes.array,
- handleSuccess: React.PropTypes.func,
+ currentUser: React.PropTypes.object.isRequired,
+ editions: React.PropTypes.array.isRequired,
+ handleSuccess: React.PropTypes.func.isRequired,
className: React.PropTypes.string,
},
@@ -25,6 +36,7 @@ let LumenusSubmitButton = React.createClass({
componentDidMount() {
WhitelabelStore.listen(this.onChange);
+
WhitelabelActions.fetchWhitelabel();
},
@@ -36,19 +48,79 @@ let LumenusSubmitButton = React.createClass({
this.setState(state);
},
- render() {
- const { availableAcls, currentUser, className, pieceOrEditions, handleSuccess } = this.props;
+ getFormDataId() {
+ return getAclFormDataId(false, this.props.editions);
+ },
- return (
-
- );
+ getAggregateEditionDetails() {
+ const { editions } = this.props;
+
+ // Currently, we only care if all the given editions are from the same parent piece
+ // and if they can be submitted
+ return editions.reduce((details, curEdition) => {
+ return {
+ solePieceId: details.solePieceId === curEdition.parent ? details.solePieceId : null,
+ canSubmit: details.canSubmit && curEdition.acl.acl_wallet_submit
+ };
+ }, {
+ solePieceId: editions.length > 0 ? editions[0].parent : null,
+ canSubmit: editions.length > 0 ? editions[0].acl.acl_wallet_submit : false
+ });
+ },
+
+ handleAdditionalDataSuccess(pieceId) {
+ // Fetch newly updated piece to update the views
+ PieceActions.fetchOne(pieceId);
+
+ this.refs.consignModal.show();
+ },
+
+ render() {
+ const { availableAcls, currentUser, className, editions, handleSuccess } = this.props;
+ const buttonTitle = getLangText('CONSIGN TO LUMENUS');
+
+ const { solePieceId, canSubmit } = this.getAggregateEditionDetails();
+
+ if (solePieceId && !canSubmit) {
+ return (
+
+
+ {buttonTitle}
+
+ }
+ handleSuccess={this.handleAdditionalDataSuccess.bind(this, solePieceId)}
+ title={getLangText('Add additional information')}>
+
+
+
+
+
+
+
+ );
+ } else {
+ return (
+
+ );
+ }
}
});