2015-08-12 13:34:41 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
import React from 'react';
|
|
|
|
|
|
|
|
import Property from './../ascribe_forms/property';
|
|
|
|
|
|
|
|
import ReactS3FineUploader from './../ascribe_uploader/react_s3_fine_uploader';
|
|
|
|
|
|
|
|
import ApiUrls from '../../constants/api_urls';
|
|
|
|
import AppConstants from '../../constants/application_constants';
|
|
|
|
|
|
|
|
import { getCookie } from '../../utils/fetch_api_utils';
|
|
|
|
|
|
|
|
let FurtherDetailsFileuploader = React.createClass({
|
|
|
|
propTypes: {
|
2015-08-21 11:11:31 +02:00
|
|
|
uploadStarted: React.PropTypes.func,
|
2015-08-12 13:34:41 +02:00
|
|
|
pieceId: React.PropTypes.number,
|
2015-08-17 20:52:36 +02:00
|
|
|
otherData: React.PropTypes.arrayOf(React.PropTypes.object),
|
2015-08-12 13:34:41 +02:00
|
|
|
setIsUploadReady: React.PropTypes.func,
|
2015-09-14 14:46:03 +02:00
|
|
|
submitFile: React.PropTypes.func,
|
2015-08-12 13:34:41 +02:00
|
|
|
isReadyForFormSubmission: React.PropTypes.func,
|
|
|
|
editable: React.PropTypes.bool,
|
2015-09-30 18:30:50 +02:00
|
|
|
multiple: React.PropTypes.bool,
|
|
|
|
location: React.PropTypes.object
|
2015-08-12 13:34:41 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
getDefaultProps() {
|
|
|
|
return {
|
|
|
|
multiple: false
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
render() {
|
|
|
|
// Essentially there a three cases important to the fileuploader
|
|
|
|
//
|
2015-08-24 11:22:44 +02:00
|
|
|
// 1. there is no other_data => do not show the fileuploader at all (where otherData is now an array)
|
2015-08-12 13:34:41 +02:00
|
|
|
// 2. there is other_data, but user has no edit rights => show fileuploader but without action buttons
|
2015-08-20 11:32:11 +02:00
|
|
|
// 3. both other_data and editable are defined or true => show fileuploader with all action buttons
|
2015-08-21 11:34:47 +02:00
|
|
|
if (!this.props.editable && (!this.props.otherData || this.props.otherData.length === 0)) {
|
2015-08-12 13:34:41 +02:00
|
|
|
return null;
|
|
|
|
}
|
2015-08-21 14:07:10 +02:00
|
|
|
|
2015-09-10 10:51:47 +02:00
|
|
|
let otherDataIds = this.props.otherData ? this.props.otherData.map((data) => data.id).join() : null;
|
2015-08-17 20:52:36 +02:00
|
|
|
|
2015-08-12 13:34:41 +02:00
|
|
|
return (
|
|
|
|
<Property
|
2015-08-24 12:11:07 +02:00
|
|
|
label="Additional files (max. 50MB per file)">
|
2015-08-12 13:34:41 +02:00
|
|
|
<ReactS3FineUploader
|
2015-08-21 11:11:31 +02:00
|
|
|
uploadStarted={this.props.uploadStarted}
|
2015-08-12 13:34:41 +02:00
|
|
|
keyRoutine={{
|
|
|
|
url: AppConstants.serverUrl + 's3/key/',
|
|
|
|
fileClass: 'otherdata',
|
|
|
|
pieceId: this.props.pieceId
|
|
|
|
}}
|
|
|
|
createBlobRoutine={{
|
|
|
|
url: ApiUrls.blob_otherdatas,
|
|
|
|
pieceId: this.props.pieceId
|
|
|
|
}}
|
2015-09-16 15:14:08 +02:00
|
|
|
validation={AppConstants.fineUploader.validation.additionalData}
|
2015-09-14 14:46:03 +02:00
|
|
|
submitFile={this.props.submitFile}
|
2015-08-12 13:34:41 +02:00
|
|
|
setIsUploadReady={this.props.setIsUploadReady}
|
|
|
|
isReadyForFormSubmission={this.props.isReadyForFormSubmission}
|
|
|
|
session={{
|
|
|
|
endpoint: AppConstants.serverUrl + 'api/blob/otherdatas/fineuploader_session/',
|
|
|
|
customHeaders: {
|
|
|
|
'X-CSRFToken': getCookie(AppConstants.csrftoken)
|
|
|
|
},
|
|
|
|
params: {
|
2015-08-17 20:52:36 +02:00
|
|
|
'pk': otherDataIds
|
2015-08-12 13:34:41 +02:00
|
|
|
},
|
|
|
|
cors: {
|
|
|
|
expected: true,
|
|
|
|
sendCredentials: true
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
signature={{
|
|
|
|
endpoint: AppConstants.serverUrl + 's3/signature/',
|
|
|
|
customHeaders: {
|
|
|
|
'X-CSRFToken': getCookie(AppConstants.csrftoken)
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
deleteFile={{
|
|
|
|
enabled: true,
|
|
|
|
method: 'DELETE',
|
|
|
|
endpoint: AppConstants.serverUrl + 's3/delete',
|
|
|
|
customHeaders: {
|
|
|
|
'X-CSRFToken': getCookie(AppConstants.csrftoken)
|
|
|
|
}
|
|
|
|
}}
|
|
|
|
areAssetsDownloadable={true}
|
|
|
|
areAssetsEditable={this.props.editable}
|
2015-09-30 18:30:50 +02:00
|
|
|
multiple={this.props.multiple}
|
|
|
|
location={this.props.location}/>
|
2015-08-12 13:34:41 +02:00
|
|
|
</Property>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export default FurtherDetailsFileuploader;
|