1
0
mirror of https://github.com/ascribe/onion.git synced 2025-02-14 21:10:27 +01:00

request form on piece level

bug fix cyland piece endpoint
bug fix otherDataUploader editable
This commit is contained in:
diminator 2015-08-24 10:48:40 +02:00
parent 7a09b863b5
commit 3b27238adf
6 changed files with 47 additions and 29 deletions

View File

@ -242,7 +242,9 @@ let EditionSummary = React.createClass({
actions = ( actions = (
<RequestActionForm <RequestActionForm
currentUser={this.props.currentUser} currentUser={this.props.currentUser}
editions={ [this.props.edition] } pieceOrEditions={ [this.props.edition] }
requestAction={this.props.edition.request_action}
requestUser={this.props.edition.owner}
handleSuccess={this.showNotification}/>); handleSuccess={this.showNotification}/>);
} }

View File

@ -82,6 +82,7 @@ let FurtherDetails = React.createClass({
setIsUploadReady={this.setIsUploadReady} setIsUploadReady={this.setIsUploadReady}
isReadyForFormSubmission={isReadyForFormSubmission} isReadyForFormSubmission={isReadyForFormSubmission}
editable={this.props.editable} editable={this.props.editable}
overrideForm={true}
pieceId={this.props.pieceId} pieceId={this.props.pieceId}
otherData={this.props.otherData} otherData={this.props.otherData}
multiple={true}/> multiple={true}/>

View File

@ -30,6 +30,7 @@ let FurtherDetailsFileuploader = React.createClass({
}, },
render() { render() {
console.log(this.props)
// Essentially there a three cases important to the fileuploader // Essentially there a three cases important to the fileuploader
// //
// 1. there is no other_data => do not show the fileuploader at all // 1. there is no other_data => do not show the fileuploader at all

View File

@ -151,11 +151,15 @@ let PieceContainer = React.createClass({
}, },
getActions(){ getActions(){
if (this.state.piece.request_action && this.state.piece.request_action.length > 0) { if (this.state.piece &&
this.state.piece.request_action &&
this.state.piece.request_action.length > 0) {
return ( return (
<RequestActionForm <RequestActionForm
currentUser={this.state.currentUser} currentUser={this.state.currentUser}
editions={ [this.state.piece] } pieceOrEditions={ this.state.piece }
requestAction={this.state.piece.request_action}
requestUser={this.state.piece.user_registered}
handleSuccess={this.showNotification}/>); handleSuccess={this.showNotification}/>);
} }
else { else {

View File

@ -16,40 +16,49 @@ import { getLangText } from '../../utils/lang_utils.js';
let RequestActionForm = React.createClass({ let RequestActionForm = React.createClass({
propTypes: { propTypes: {
editions: React.PropTypes.arrayOf(React.PropTypes.object), pieceOrEditions: React.PropTypes.oneOfType([
React.PropTypes.object,
React.PropTypes.array
]).isRequired,
requestAction: React.PropTypes.string,
requestUser: React.PropTypes.string,
currentUser: React.PropTypes.object, currentUser: React.PropTypes.object,
handleSuccess: React.PropTypes.func handleSuccess: React.PropTypes.func
}, },
isPiece(){
return this.props.pieceOrEditions.constructor !== Array;
},
getUrls() { getUrls() {
let edition = this.props.editions[0];
let urls = {}; let urls = {};
if (this.props.requestAction === 'consign'){
if (edition.request_action === 'consign'){
urls.accept = ApiUrls.ownership_consigns_confirm; urls.accept = ApiUrls.ownership_consigns_confirm;
urls.deny = ApiUrls.ownership_consigns_deny; urls.deny = ApiUrls.ownership_consigns_deny;
} else if (edition.request_action === 'unconsign'){ } else if (this.props.requestAction === 'unconsign'){
urls.accept = ApiUrls.ownership_unconsigns; urls.accept = ApiUrls.ownership_unconsigns;
urls.deny = ApiUrls.ownership_unconsigns_deny; urls.deny = ApiUrls.ownership_unconsigns_deny;
} else if (edition.request_action === 'loan'){ } else if (this.props.requestAction === 'loan' && !this.isPiece()){
urls.accept = ApiUrls.ownership_loans_confirm; urls.accept = ApiUrls.ownership_loans_confirm;
urls.deny = ApiUrls.ownership_loans_deny; urls.deny = ApiUrls.ownership_loans_deny;
} else if (this.props.requestAction === 'loan' && this.isPiece()){
urls.accept = ApiUrls.ownership_loans_pieces_confirm;
urls.deny = ApiUrls.ownership_loans_pieces_deny;
} }
return urls; return urls;
}, },
getBitcoinIds(){ getFormData(){
return this.props.editions.map(function(edition){ if (this.isPiece()) {
return edition.bitcoin_id; return {piece_id: this.props.pieceOrEditions.id};
}); }
}, else {
return {bitcoin_id: this.props.pieceOrEditions.map(function(edition){
getFormData() { return edition.bitcoin_id;
return { }).join()};
bitcoin_id: this.getBitcoinIds().join() }
};
}, },
showNotification(option, action, owner) { showNotification(option, action, owner) {
@ -66,8 +75,7 @@ let RequestActionForm = React.createClass({
}, },
getContent() { getContent() {
let edition = this.props.editions[0]; let message = this.props.requestUser + ' ' + getLangText('requests you') + ' ' + this.props.requestAction + ' ' + getLangText('this edition%s', '.');
let message = edition.owner + ' ' + getLangText('requests you') + ' ' + edition.request_action + ' ' + getLangText('this edition%s', '.');
return ( return (
<span> <span>
@ -77,14 +85,12 @@ let RequestActionForm = React.createClass({
}, },
getAcceptButtonForm(urls) { getAcceptButtonForm(urls) {
let edition = this.props.editions[0]; if(this.props.requestAction === 'unconsign') {
if(edition.request_action === 'unconsign') {
return ( return (
<AclButton <AclButton
availableAcls={{'acl_unconsign': true}} availableAcls={{'acl_unconsign': true}}
action="acl_unconsign" action="acl_unconsign"
pieceOrEditions={this.props.editions} pieceOrEditions={this.props.pieceOrEditions}
currentUser={this.props.currentUser} currentUser={this.props.currentUser}
handleSuccess={this.props.handleSuccess} /> handleSuccess={this.props.handleSuccess} />
); );
@ -93,7 +99,9 @@ let RequestActionForm = React.createClass({
<Form <Form
url={urls.accept} url={urls.accept}
getFormData={this.getFormData} getFormData={this.getFormData}
handleSuccess={this.showNotification(getLangText('accepted'), edition.request_action, edition.owner)} handleSuccess={
this.showNotification(getLangText('accepted'), this.props.requestAction, this.props.requestUser)
}
isInline={true} isInline={true}
className='inline pull-right'> className='inline pull-right'>
<button <button
@ -107,8 +115,6 @@ let RequestActionForm = React.createClass({
}, },
getButtonForm() { getButtonForm() {
let edition = this.props.editions[0];
let urls = this.getUrls(); let urls = this.getUrls();
let acceptButtonForm = this.getAcceptButtonForm(urls); let acceptButtonForm = this.getAcceptButtonForm(urls);
@ -118,7 +124,9 @@ let RequestActionForm = React.createClass({
url={urls.deny} url={urls.deny}
isInline={true} isInline={true}
getFormData={this.getFormData} getFormData={this.getFormData}
handleSuccess={this.showNotification(getLangText('denied'), edition.request_action, edition.owner)} handleSuccess={
this.showNotification(getLangText('denied'), this.props.requestAction, this.props.requestUser)
}
className='inline pull-right'> className='inline pull-right'>
<button <button
type="submit" type="submit"

View File

@ -30,6 +30,8 @@ let ApiUrls = {
'ownership_consigns_confirm': AppConstants.apiEndpoint + 'ownership/consigns/confirm/', 'ownership_consigns_confirm': AppConstants.apiEndpoint + 'ownership/consigns/confirm/',
'ownership_consigns_deny': AppConstants.apiEndpoint + 'ownership/consigns/deny/', 'ownership_consigns_deny': AppConstants.apiEndpoint + 'ownership/consigns/deny/',
'ownership_loans_pieces': AppConstants.apiEndpoint + 'ownership/loans/pieces/', 'ownership_loans_pieces': AppConstants.apiEndpoint + 'ownership/loans/pieces/',
'ownership_loans_pieces_confirm': AppConstants.apiEndpoint + 'ownership/loans/pieces/confirm/',
'ownership_loans_pieces_deny': AppConstants.apiEndpoint + 'ownership/loans/pieces/deny/',
'ownership_loans_editions': AppConstants.apiEndpoint + 'ownership/loans/editions/', 'ownership_loans_editions': AppConstants.apiEndpoint + 'ownership/loans/editions/',
'ownership_loans_confirm': AppConstants.apiEndpoint + 'ownership/loans/editions/confirm/', 'ownership_loans_confirm': AppConstants.apiEndpoint + 'ownership/loans/editions/confirm/',
'ownership_loans_deny': AppConstants.apiEndpoint + 'ownership/loans/editions/deny/', 'ownership_loans_deny': AppConstants.apiEndpoint + 'ownership/loans/editions/deny/',