diff --git a/js/components/ascribe_accordion_list/accordion_list_item.js b/js/components/ascribe_accordion_list/accordion_list_item.js index 1fff7f98..03d14425 100644 --- a/js/components/ascribe_accordion_list/accordion_list_item.js +++ b/js/components/ascribe_accordion_list/accordion_list_item.js @@ -37,7 +37,7 @@ let AccordionListItem = React.createClass({ }, componentDidMount() { - if(this.props.content.num_editions !== 0) { + if(this.props.content.num_editions > 0) { PieceListActions.fetchFirstEditionForPiece(this.props.content.id); } }, @@ -66,6 +66,7 @@ let AccordionListItem = React.createClass({ handleEditionCreationSuccess(response) { let notification = new GlobalNotificationModel(response.notification, 'success', 10000); GlobalNotificationActions.appendGlobalNotification(notification); + PieceListActions.updatePropertyForPiece({pieceId: this.props.content.id, key: 'num_editions', value: 0}); this.setState({ creatingEditions: true @@ -106,7 +107,7 @@ let AccordionListItem = React.createClass({ render() { let linkData; - if(this.props.content.num_editions === 0) { + if(this.props.content.num_editions < 1) { linkData = { to: 'piece', params: { @@ -157,7 +158,7 @@ let AccordionListItem = React.createClass({ - {this.props.content.num_editions === 0 && this.state.showCreateEditionsDialog ? : null} + {this.props.content.num_editions < 1 && this.state.showCreateEditionsDialog ? : null} {/* this.props.children is AccordionListItemTableEditions */} {this.props.children} diff --git a/js/components/ascribe_accordion_list/accordion_list_item_edition_widget.js b/js/components/ascribe_accordion_list/accordion_list_item_edition_widget.js index 39352fd5..0c6a1082 100644 --- a/js/components/ascribe_accordion_list/accordion_list_item_edition_widget.js +++ b/js/components/ascribe_accordion_list/accordion_list_item_edition_widget.js @@ -75,23 +75,23 @@ let AccordionListItemEditionWidget = React.createClass({ let piece = this.props.piece; let numEditions = piece.num_editions; - if(numEditions === 0) { - if(this.props.creatingEditions) { - return ( + if(numEditions === -1) { + return ( + + + Editions + + ); + } + else if(numEditions === 0) { + return ( Creating Editions ); - } else { - return ( - - + Editions - - ); - } - } else if(numEditions === 1) { + } + else if(numEditions === 1) { let editionMapping = piece && piece.firstEdition ? piece.firstEdition.edition_number + '/' + piece.num_editions : ''; return ( diff --git a/js/components/ascribe_forms/form.js b/js/components/ascribe_forms/form.js index f767141f..7e0d6b42 100644 --- a/js/components/ascribe_forms/form.js +++ b/js/components/ascribe_forms/form.js @@ -7,6 +7,7 @@ import Button from 'react-bootstrap/lib/Button'; import requests from '../../utils/requests'; import { getLangText } from '../../utils/lang_utils'; +import { mergeOptionsWithDuplicates } from '../../utils/general_utils'; import AlertDismissable from './alert'; @@ -55,12 +56,12 @@ let Form = React.createClass({ getFormData(){ let data = {}; - if ('getFormData' in this.props){ - data = this.props.getFormData(); - } for (let ref in this.refs){ data[this.refs[ref].props.name] = this.refs[ref].state.value; } + if ('getFormData' in this.props){ + data = mergeOptionsWithDuplicates(data, this.props.getFormData()); + } return data; }, diff --git a/js/components/ascribe_forms/input_checkbox.js b/js/components/ascribe_forms/input_checkbox.js index 959401e9..7dc2f9ac 100644 --- a/js/components/ascribe_forms/input_checkbox.js +++ b/js/components/ascribe_forms/input_checkbox.js @@ -19,7 +19,8 @@ let InputCheckbox = React.createClass({ handleFocus() { this.refs.checkbox.getDOMNode().checked = !this.refs.checkbox.getDOMNode().checked; this.setState({ - show: this.refs.checkbox.getDOMNode().checked + show: this.refs.checkbox.getDOMNode().checked, + value: this.refs.checkbox.getDOMNode().checked }); }, diff --git a/js/components/signup_container.js b/js/components/signup_container.js index d1895870..654b9c03 100644 --- a/js/components/signup_container.js +++ b/js/components/signup_container.js @@ -91,6 +91,9 @@ let SignupForm = React.createClass({ ', ' + getLangText('please confirm') + '.'); }, + getFormData(){ + return {terms: this.refs.form.refs.terms.refs.input.state.value}; + }, render() { let tooltipPassword = getLangText('Your password must be at least 10 characters') + '.\n ' + getLangText('This password is securing your digital property like a bank account') + '.\n ' + @@ -101,6 +104,7 @@ let SignupForm = React.createClass({ ref='form' url={apiUrls.users_signup} handleSuccess={this.handleSuccess} + getFormData={this.getFormData} buttons={