1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-28 00:28:00 +02:00

implement form locking for cyland

This commit is contained in:
Tim Daubenschütz 2015-08-19 17:39:25 +02:00
parent 862cd7986c
commit 495f5600af
3 changed files with 30 additions and 6 deletions

View File

@ -28,7 +28,10 @@ let RegisterPieceForm = React.createClass({
isFineUploaderEditable: React.PropTypes.bool,
enableLocalHashing: React.PropTypes.bool,
children: React.PropTypes.element,
onLoggedOut: React.PropTypes.func
onLoggedOut: React.PropTypes.func,
// For this form to work with SlideContainer, we sometimes have to disable it
disabled: React.PropTypes.bool
},
getDefaultProps() {
@ -84,9 +87,10 @@ let RegisterPieceForm = React.createClass({
let currentUser = this.state.currentUser;
let enableLocalHashing = currentUser && currentUser.profile ? currentUser.profile.hash_locally : false;
enableLocalHashing = enableLocalHashing && this.props.enableLocalHashing;
return (
<Form
disabled={false}
disabled={this.props.disabled}
className="ascribe-form-bordered"
ref='form'
url={ApiUrls.pieces_list}
@ -95,7 +99,7 @@ let RegisterPieceForm = React.createClass({
buttons={<button
type="submit"
className="btn ascribe-btn ascribe-btn-login"
disabled={!this.state.isUploadReady}>
disabled={!this.state.isUploadReady || this.props.disabled}>
{this.props.submitMessage}
</button>}
spinner={

View File

@ -19,7 +19,9 @@ import { getLangText } from '../../../../../../utils/lang_utils';
let CylandAdditionalDataForm = React.createClass({
propTypes: {
handleSuccess: React.PropTypes.func.isRequired,
piece: React.PropTypes.object.isRequired
piece: React.PropTypes.object.isRequired,
disabled: React.PropTypes.bool
},
getInitialState() {
@ -67,6 +69,7 @@ let CylandAdditionalDataForm = React.createClass({
if(this.props.piece && this.props.piece.id) {
return (
<Form
disabled={this.props.disabled}
className="ascribe-form-bordered"
ref='form'
url={requests.prepareUrl(ApiUrls.piece_extradata, {piece_id: this.props.piece.id})}
@ -76,7 +79,7 @@ let CylandAdditionalDataForm = React.createClass({
<button
type="submit"
className="btn ascribe-btn ascribe-btn-login"
disabled={!this.state.isUploadReady}>
disabled={!this.state.isUploadReady || this.props.disabled}>
{getLangText('Proceed to loan')}
</button>
}

View File

@ -53,7 +53,8 @@ let CylandRegisterPiece = React.createClass({
WhitelabelStore.getState(),
{
selectedLicense: 0,
isFineUploaderActive: false
isFineUploaderActive: false,
step: 0
});
},
@ -99,11 +100,16 @@ let CylandRegisterPiece = React.createClass({
PieceActions.updatePiece(response.piece);
}
this.incrementStep();
this.refs.slidesContainer.nextSlide();
},
handleAdditionalDataSuccess() {
this.refreshPieceList();
this.incrementStep();
this.refs.slidesContainer.nextSlide();
},
@ -117,6 +123,15 @@ let CylandRegisterPiece = React.createClass({
this.transitionTo('piece', {pieceId: this.state.piece.id});
},
// We need to increase the step to lock the forms that are already filed out
incrementStep() {
// also increase step
let newStep = this.state.step + 1;
this.setState({
step: newStep
});
},
refreshPieceList() {
PieceListActions.fetchPieceList(
this.state.page,
@ -155,6 +170,7 @@ let CylandRegisterPiece = React.createClass({
<Row className="no-margin">
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
<RegisterPieceForm
disabled={this.state.step > 0}
enableLocalHashing={false}
headerMessage={getLangText('Submit to Cyland Archive')}
submitMessage={getLangText('Submit')}
@ -182,6 +198,7 @@ let CylandRegisterPiece = React.createClass({
<Row className="no-margin">
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
<CylandAdditionalDataForm
disabled={this.state.step > 1}
handleSuccess={this.handleAdditionalDataSuccess}
piece={this.state.piece}/>
</Col>